资讯动态

XShell保姆级教程:从免费授权到密钥登录与端口转发

发布时间:2026/10/6 8:28:34 来源:尧图企业网站定制
如果你和我一样常年要在 Windows 电脑上管理远端的 Linux 服务器那 XShell 这个名字应该不会陌生。我第一次用它就是刚接手公司测试环境的时候一台 CentOS 虚拟机放在机房没有显示器没有网页控制台唯一的入口就是 SSH。而 XShell 免费版就是那个让我从“对着黑窗口发懵”到“一天能开着八个会话同时干活”的关键工具。很多新手一上来就卡在下载、安装、乱码、连接失败这些点上这篇文就把整个流程拆开揉碎从免费授权怎么申请到第一个会话怎么建再到密钥登录和端口转发这种进阶玩法全部按保姆级标准写清楚。1. XShell 不是“一个终端模拟器”这么简单搞清楚它的核心价值1.1 它到底做了什么很多人把 XShell 简单理解为“黑窗口”但它的底层逻辑值得花 30 秒搞清楚。XShell 的本质是一个 SSH 客户端它和服务器之间通过 SSH 协议建立一条加密通道。你在本地键盘敲下命令字符被加密通过网络送到远端服务器上服务器执行完把结果同样加密送回本地再由 XShell 解密渲染出来。这个过程里有三个关键点第一传输内容是加密的截获数据的人也看不到明文密码第二它走的默认端口是 22只要服务器开了 sshd 服务就能连第三远端 Linux 只负责执行命令图形界面可有可无。正因为这样XShell 才特别适合管理云服务器、虚拟机、实验室机柜这些没有显示器的 Linux 环境。它的价值不在“能打开个窗口”而在于让你高效、安全、稳定地操作大量远端主机。1.2 免费版究竟“免”在哪里这里得说清楚一个容易误解的事XShell 有商业付费版也有家庭/学校免费许可证。免费版和商业版在终端功能上差别没有普通人想得那么大日常的连接、标签页、密钥管理、端口转发全都用得上区别主要在授权范围上——免费版只允许非商业用途比如个人学习、在校实验、开源项目维护这些场景。如果你是在公司生产环境使用严格来说应该购买商业授权不然软件上方会一直有授权提示公司合规部门那边也过不去。我第一次申请免费授权时也在想填个表真的会给吗结果是真给。在 NetSarang 官网上找到 Xshell 的家庭/学校授权页面按提示填写姓名、邮箱、使用理由几分钟后邮箱就会收到一封包含下载链接和 License 信息的邮件。需要注意免费授权一般有有效期到期后重新去官网申请一次就行流程并不麻烦。1.3 和同类工具比XShell 好在哪我用过 Windows 自带的终端、PuTTY、MobaXterm最后主力还是 XShell。原因很朴素一是多标签管理做得舒服开十几个服务器会话都在一个窗口里鼠标点一点就切换二是会话配置能保存重装系统后导入一下就能恢复一整批服务器列表三是和 Xftp 的联动很自然转文件不用额外切工具。不是说其他工具不行而是 XShell 的这几个点恰好命中了我这种多服务器运维的日常。2. 安装前的准备工作官方渠道、版本选择与免费授权一个都别省2.1 从哪下载、下哪个版本先说渠道。强烈建议只从 NetSarang 官网或者官方邮件里的链接下载不要图方便去第三方下载站。这些站点的安装包经常捆绑其他软件或者版本陈旧出现问题你很难排查。官方下载页面一般会给出 Xshell 的当前主版本比如 7、8 这些对新手来说选最新的稳定版即可不用追测试版。下载之前先确认自己的 Windows 系统位数。现在是 64 位系统为主但也可能遇到 32 位的老机器别下错了。安装包通常是 exe 格式几十兆大小下载过程不会有奇怪弹窗。如果你在学校或者企业内部可能还有软件管家这种内部分发渠道前提是确认来源靠谱。2.2 免费授权申请的具体操作申请免费授权的操作很固定进入官网的 Xshell 下载页找到“家庭/学校”入口填一个表单。里面需要英文或拼音姓名、有效邮箱地址、你所在学校或单位名称、用途说明。用途建议写清楚是个人学习、实验或开源开发不要写“公司生产环境”。提交之后等邮件通常在几分钟到一小时内到达如果没有收到检查一下垃圾箱。邮件里的内容分两部分一是 Xshell 安装包的下载链接二是 License 信息。下载好安装包后先正常安装等装完了打开软件用邮件里的 License 去激活就能摆脱“评估版”的提示。这一步很多人漏掉结果用了一段时间后发现弹窗提醒越来越频繁还以为是软件的锅其实就是没激活免费授权。2.3 安装过程中最容易忽略的选项安装包运行后前面几步基本上就是“下一步、下一步”但有两处值得停下来看一眼。第一是安装路径建议不要装在带中文或空格的目录里比如“D:\Program Files\Xshell” 这样的纯英文路径最保险否则个别脚本和日志功能可能出问题。第二是组件选择Xshell 安装向导里通常会有“集成到 Windows 右键菜单”之类的选项如果你打算只在软件内部操作可以不勾选。右键菜单集成用久了你会发现每次打开菜单都多出一行实际上很少从右键直接启动终端。还有一个隐藏问题是 Windows Defender 防火墙弹窗。安装结束后第一次运行 XShell系统会问“是否允许此应用通过防火墙”。这里要选择允许尤其是在“专用网络”上否则后续连接远端服务器时可能被本地防火墙拦下来表现就是连不上、卡在等待原因却和你服务器没关系。2.4 安装失败常见原因速查我见过不少刚接触的人安装到 99% 突然报错回滚或者双击安装包后根本没反应。原因大多集中在三个地方。一是缺少 Microsoft Visual C 运行库。XShell 在 Windows 上依赖 VC 运行环境某些精简版系统没装全。解决办法是到微软官网下载最新的 VC Redistributable装完再跑 XShell 安装包。二是安全软件误报拦截。有些杀毒软件对安装包里的更新组件特别敏感尤其是破解版杀毒软件容易把正常安装程序当恶意行为拦截。看到拦截提示时先不要急着“信任”确认一下安装包来源确实是官网然后临时放行一次。三是权限不足。安装路径选在 C 盘根目录这类需要管理员权限的位置时如果当前 Windows 用户不是管理员就会中途失败。右键安装包选择“以管理员身份运行”基本能解决。3. 第一次连接上线新建会话的每一步和易错点3.1 先看明白主界面再动手安装并激活后第一次打开 XShell你会看到一个带菜单栏、工具栏的主窗口中间默认是“新建会话”按钮。窗口顶部是一排标签页区域以后每一个连接都会在这里占一个标签。左侧如果有会话管理器就是你保存过的所有服务器列表。界面不算复杂核心入口就两个一个是“新建”按钮一个是顶部“文件→新建”菜单。看到一个空界面不要慌接下来要做的就是创建会话。会话可以理解为“一台远端服务器的连接配置”里面记录了主机地址、端口、用户名、认证方式这些信息。配置好一次以后双击就能连接不用每次重新输入。3.2 协议、主机、端口、用户名这四件事必须填对点击“新建”之后弹出的窗口顶部是“名称”这是给你自己看的比如“测试环境 CentOS”或者“生产-Web01”方便以后识别。紧接着最关键的配置区域是这样的协议默认是 SSH不要改。主机填写服务器的 IP 地址或域名。这里最容易出错比如把192.168.1.100敲成192.168.1.10或者末尾多了一个空格。如果你连接的是本机虚拟机还要确认虚拟机的 IP 和你的 Windows 在同一局域网段。端口号SSH 默认是 22。如果服务器改了端口比如用了 2222这里必须同步改否则 22 端口没服务连接会直接超时。用户名填登录 Linux 的账号比如 root 或普通用户。这个窗口里还有一个“身份验证”区域默认是 Password。也就是说连接的时候它会提示你输入密码。如果后面你已经配好了密钥也可以在这里换成 Public Key。第一次用保持默认的 Password 就好。3.3 首次连接时的“主机密钥”提示填完配置点击“连接”弹出的第一个画面往往不是登录提示而是一个主机密钥警告“该主机的 SSH 主机密钥尚未缓存您确定要接受吗”伴随一串指纹类似SHA256:xxxx。这段话的作用是防止中间人攻击——对方不是你想连的那台服务器。正常情况下你首次连接一台新服务器出现这个提示是合理的选择“接受并保存”即可XShell 会把这台主机的指纹存下来下次连接不再提示。如果服务器重装过系统指纹变化XShell 又会提示密钥不匹配这时候就要确认是不是真重装了别盲目点“接受”。3.4 登录时的密码问题接受主机密钥后会弹出输入密码的窗口。这里有几个特别常见的坑第一是键盘大小写锁定尤其是密码里包含大写字母时光看屏幕很难发现第二是复制密码时容易多复制一个空格进去粘贴后怎么看都正确但就是认证失败建议在密码框里随便敲点字符再删掉重置输入状态第三是确认你用的是不是密码登录如果服务器已经禁用了密码登录而只允许密钥你在这里输再多遍密码都没用需要改用 Public Key 方式。如果一切顺利你会看到类似[rootlocalhost ~]#的提示符。这就代表你成功连上了远端 Linux之后敲进去的每一条命令都在远端执行。第一次别急着操作先敲一条whoami或者pwd感受一下确认自己在哪、是谁。4. 别让乱码劝退你编码、字体和外观必须调的一遍4.1 中文乱码的根因是编码不一致很多新手连上服务器后看到的不是中文而是锟斤拷或者这样的乱码第一反应是“系统坏了”。其实 XShell 没坏服务器也没坏问题出在“终端编码”和“服务器语言环境”不一致上。Linux 服务器内部一般使用 UTF-8 编码如果 XShell 终端默认使用的编码是系统默认的 GB 系列或者终端没有设置为 UTF-8中文字符自然显示不出来。解决办法分两步。第一步在 XShell 菜单里打开“工具→选项→终端→编码”把编码改为“Unicode (UTF-8)”。第二步在“工具→选项→终端”里找到“语言环境”设置为zh_CN.UTF-8或en_US.UTF-8看你对提示语言的习惯。如果只是某一个会话乱码也可以在这个会话的属性窗口里单独设置编码效果是一样的。服务器端自己也要确认语言环境。连上服务器后执行locale echo $LANG如果输出里没有 UTF-8说明系统本身就没设置好中文本地化环境。需要临时改的话执行export LANGzh_CN.UTF-8要让永久生效编辑/etc/locale.conf或/etc/environment把LANG设置成zh_CN.UTF-8。改完重开一个会话验证中文就不乱了。这条经验适用于所有 SSH 终端不只 XShell遇到乱码先查编码基本能解决八成问题。4.2 字体、光标与配色怎么调到眼睛舒服乱码解决之后接下来是“看得舒服”。XShell 默认字体在字体很小的内容面前特别费眼尤其是看日志的时候。我的习惯是打开“工具→选项→外观”字体选等宽字体比如 Consolas 或者微软雅黑字号设在 12 到 14 之间。等宽字体能让代码和命令的竖列对齐排查日志、对比输出时非常关键。光标样式看个人习惯推荐把光标设置成“竖线”能更清晰地看到当前位置。配色方案方面深色背景是运维党首选长时间盯着屏幕不容易疲劳。XShell 内置了几套主题比如“标准”和“深色”。我日常用的是深色调配上一套高对比度的 ANSI 颜色日志里的红色报错在深色背景下一眼就能看到。4.3 会话日志打开之后你就再也不想关掉连接服务器做操作尤其是改配置文件、部署程序这种影响比较大的动作最怕的就是“我当时到底敲了啥”。以前我吃过亏半夜做变更第二天出了问题回忆半天也想不起哪一步弄错了。XShell 的日志功能就是解决这个问题的。在“工具→选项→日志和打印”里可以设置日志保存路径和文件名规则。我喜欢把所有日志放到一个固定目录比如D:\XshellLogs文件名按日期和会话名区分%Y-%m-%d_%S_%N.log。这样每天每个连接都会生成一份独立日志里面完整记录了你的输入和服务器输出。排查问题时直接翻日志比拍屏记录高效得多。日志是纯文本也会记录下当时看到的报错这个习惯建议不管你是不是新手都尽早养成。5. 一天能用八小时的高频技巧多标签、快速命令与 Xftp 文件传输5.1 一个窗口管理几十台服务器标签页和分屏连接多台服务器后XShell 会在主窗口里开多个标签点击标签就能在服务器之间切换。这个操作看起来简单但使用频率极高。右键标签还能选择“垂直拆分”或“水平拆分”把窗口分隔成两块、三块甚至四块同时显示不同服务器的终端界面。分屏最典型的场景是我对比两台服务器的配置左边打开生产机的nginx.conf右边打开测试机的nginx.conf一边看一边对比不用来回切换标签看得头晕。再比如追踪日志左边看应用端日志右边看数据库端日志时间线对不上的时候直接肉眼对齐。5.2 快速命令集把常用命令变成一个按钮有一些命令我每天都要敲比如查看磁盘、内存、服务状态。XShell 的“快速命令集”可以把这些命令保存成按钮点一下就能往当前会话里发送。在“工具→快速命令集”里新建一个命令集比如“日常巡检”然后添加命令。每条命令可以配置成“发送字符串”也就是把一串文本直接当作键盘输入送进终端。比如df -h free -h设置好之后工具栏上或者右键菜单里会出现对应的按钮。我往快速命令里放了tail -f /var/log/messages、systemctl status nginx这类命令想查状态的时候不用再一个字符一个字符敲了。这里有个细节需要注意发送字符串时命令末尾会附带回车最好把命令和回车一起配置在发送内容里否则只是出现在命令行上不会真正执行。5.3 Xftp上传下载文件不用再找第三方工具XShell 和 Xftp 是同门工具通常一起安装。在 XShell 的工具栏上有一个“新建文件传输”按钮点击后会拉起 Xftp并且自动沿用当前 SSH 会话的地址、端口、用户名和密码。Xftp 走的是 SFTP 协议也就是基于 SSH 的文件传输文件内容同样被加密比传统的 FTP 明文传输安全得多。实际用的时候本地窗口和远程窗口并排显示你直接把文件从左拖到右就是上传从右拖到左就是下载。我第一次用它传一个几十 GB 的数据库备份文件速度比网线复制还稳定关键是拖拽体验和 Windows 资源管理器几乎一样不需要记任何 FTP 命令。如果你要在服务器上编辑本地文件也可以直接用 Xftp 打开远端文件它内置了简单的文本编辑器改完直接保存并上传省去下载、修改、再上传的复杂流程。5.4 复制粘贴和快捷键先改这两个默认行为XShell 在 Windows 下的快捷键并不是完全照搬系统习惯的新手最容易踩的一个坑是按CtrlC发现没有复制反而向终端发送了一个中断信号把正在跑的命令打断了。原因很简单终端里CtrlC本来就是中断进程的默认按键XShell 需要区分“本地复制”和“发送中断信号”两个场景。我自己是这么设置的在“工具→选项→键盘和鼠标→编辑”里把“复制”设置为CtrlShiftC把“粘贴”设置为CtrlShiftV。这样既保留了终端里CtrlC中断命令的原生语义又能在终端里快捷复制粘贴。如果实在不习惯也可以直接把复制粘贴改成CtrlC/CtrlV但代价是你想中断一个程序时得另外找办法发送中断信号。建议按我的方案来用一周就会形成肌肉记忆。还有一个特别好用的小细节XShell 默认支持“鼠标右键粘贴”。选中一段文字后不用按任何快捷键直接右键就粘贴到终端里。这个行为在反复复制 IP、路径、文件名的时候极其高效我几乎所有日常操作都依赖它。6. 现实世界会遇到的各种坑连不上、老掉线、乱码依旧的完整排查链路6.1 连接超时先分清是自己操作问题还是网络问题新建会话点击“连接”后如果长时间停在“正在连接”最后报出“连接超时”可以先按下面的顺序排查每一步都有明确目的。第一步确认 IP 能通。在 Windows 的 CMD 里执行ping 服务器IP。如果能通说明网络链路基本没问题如果不通检查本地网络和服务器是否在同一网段。连接 VMware 虚拟机时这一步最常见失败原因是虚拟机网络模式配置不对。NAT 模式通常需要端口转发或先把虚拟机和宿主机放进同一个 NAT 网段而桥接模式则要求虚拟机的 IP 和物理机在同一局域网段并且路由器允许这个 IP 通信。第二步检查端口能通。执行Test-NetConnection 服务器IP -Port 22返回TcpTestSucceeded : True就说明服务器 22 端口在监听。如果只是 IP 通但 22 不通多半是服务器防火墙拦截了。在服务器上检查sudo systemctl status sshd sudo firewall-cmd --list-all如果sshd没在运行启动它。如果防火墙规则里没有放行 22执行sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --reload第三步检查云服务器安全组。现在不少服务器跑在云上你配好防火墙还不够还要去云控制台确认安全组规则放行了 22 端口这个操作经常被忘掉。上面三步走完90% 的连接超时问题都能定位。6.2 频繁掉线不是 XShell 的锅是 keepalive 没开有时候连接是通的但没过多久终端就冻结敲什么都没反应然后提示连接已断开。出现这种情况原因多半是网络中某个节点把空闲的 TCP 连接判定为超时并清理了。SSH 半天没数据防火墙或路由器就把它掐了。解决思路是让 SSH 连接定期发一个“心跳包”。在服务器的 sshd 配置里加上ClientAliveInterval 60 ClientAliveCountMax 3意思是每隔 60 秒服务器主动发一个探活包如果一个包都没收到超过 3 次再断开连接。改完保存并重启 sshdsudo systemctl restart sshd同时在 XShell 的会话属性里找到“连接→保持活动”或类似的选项开启“每 30 秒发送一个 keepalive 包”也可以从客户端一侧兜底。两边同时配上断线问题基本绝迹。6.3 认证失败密码没错也连不上的隐藏原因密码明明是对的但 XShell 一直弹“身份验证失败”除了大小写和空格问题还有一个很隐藏的原因服务器配置了禁止 root 通过密码登录或者sshd_config里的密码认证被全局关掉了。你可以在服务器上查看grep -E PasswordAuthentication|PermitRootLogin /etc/ssh/sshd_config如果输出显示PasswordAuthentication no说明密码登录被禁用你得换用密钥登录。如果显示PermitRootLogin no说明 root 用户不允许直接登录你需要用普通用户登录再通过su -切换到 root。这个问题在不少安全加固过的服务器上都会遇到。6.4 乱码仍然存在八成是 locale 没有真正生效按照第 4 节设置完编码后如果乱码还在那就不只是 XShell 的编码问题了。检查一下你连接的用户尤其是用普通用户登录时可能在/etc/profile或~/.bashrc里改写了语言环境。执行locale看输出如果LANG和LC_ALL还是空的或不是 UTF-8就手动在/etc/profile.d/下新建一个脚本把所有用户的语言环境都固定住cat /etc/profile.d/locale_fix.sh EOF export LANGzh_CN.UTF-8 export LC_ALLzh_CN.UTF-8 EOF然后重新登录验证。把系统层面和终端层面的编码都固定成 UTF-8 之后中文乱码就是历史问题了。6.5 提示“远程主机不接受该密钥”或密钥失效如果你过去一直用密钥登录某天突然失败大概率是服务器上authorized_keys内容被动过或者服务器重装后你把新系统安装时自动生成的密钥当成了信任密钥。这时候不要反复重试应该登录云控制台或通过其他应急通道重新把正确的公钥内容放进~/.ssh/authorized_keys然后确认.ssh目录权限是 700、文件权限是 600。权限不对sshd 出于安全策略会直接拒绝加载密钥。7. 进阶且高频的两个功能密钥免密登录和本地端口转发7.1 生成密钥对XShell 向导帮你把事情做对密码登录最大的痛点是每次都要输密码某些服务器密码策略严格隔几个月还要换一次。密钥登录则是一劳永逸的方式。密钥对由公钥和私钥两部分组成私钥留在本地公钥放进服务器之后连接时服务器用公钥验证本地私钥的签名验证通过就能直接进入系统。在 XShell 里点击“工具→新建用户密钥生成向导”选择算法。RSA 是老牌算法兼容性最好推荐 2048 位以上服务器较新的话也可以选 ED25519性能更好、密钥更短。生成的密钥可以设置口令短语也就是私钥的密码这样即使有人拿到你的私钥文件不知道口令也连不上。7.2 把公钥部署到服务器并改成免密登录生成后XShell 会显示一个公钥内容默认是以ssh-rsa或ssh-ed25519开头的一长串字符。复制整行到服务器上执行mkdir -p ~/.ssh chmod 700 ~/.ssh echo ssh-ed25519 你的公钥内容 ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys然后把 XShell 会话属性里的“身份验证”改成“Public Key”选择你刚生成的用户密钥。下次连接时密钥对验证通过就直接登录了。我配置完密钥连着两台服务器都不再输密码效率提升非常明显。这里有一个操作顺序上的细节改完服务器上的密钥之后先不要关闭当前密码登录的会话而是新开一个会话试验密钥登录。确认能成功登录后再关闭密码登录通道这样即使密钥配置有问题你还有退路。直接在生产服务器上关掉密码登录而密钥又没配置好结果就是把自己锁在门外只能去机房或控制台救。7.3 本地端口转发用 XShell 打通内网服务端口最后说一个很多人问“怎么实现”的功能本地端口转发。最常见的场景是有一台跳板机或者堡垒机能 SSH 到内网数据库服务器但数据库的 3306 端口直接访问不了。这时候你希望本地的 MySQL 客户端能直接访问到内网的 MySQL。做法是这样的在已经连接跳板机的会话属性里找到“连接→SSH→隧道”点击添加隧道。类型选择“Local (Outgoing)”源主机填127.0.0.1监听端口填一个本地没用过的端口比如13306。目标主机填内网数据库服务器的 IP目标端口填3306。保存后保持这台跳板机处于连接状态然后你在本地执行mysql -h 127.0.0.1 -P 13306 -u root -p这个连接会先走到本地 13306 端口再通过 SSH 隧道传给跳板机由跳板机转发到内网数据库的 3306 端口。全程数据走加密 SSH 通道比直接在内网开端口安全很多也省去了给数据库配置公网访问的麻烦。同一套思路也可以用于远程桌面之类的场景只要两端都是 TCP 协议就可以试着转。端口转发配好后XShell 会话必须保持连接一旦断开隧道也就没了。所以我会把这类会话单独开一个标签不占日常操作的位置避免误关。用 XShell 这件事说穿了就是一个“习惯”问题。免费的授权简单的配置再加上每天高频的操作用久了你会发现自己对服务器管理的效率明显上来了。最后分享一个我自己的习惯新配置好一台服务器的会话第一件事不是急着敲命令而是先把编码设为 UTF-8、打开日志记录、把常用命令加进快速命令集。这几件事花不了五分钟却在后来的每一次操作里都在帮你省时间。踩过坑、绕过节才会理解“配置在先、操作在后”这句话有多值钱。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑