你说你在 Windows 上摸到一台 Linux 服务器时,最常用的开场动作是什么?不是开浏览器看文档,而是拿起 SSH 客户端,敲上十几条命令,把该看的日志看了、该改的配置改了。XShell 就是这类工具里被提起最多的那个:轻量、稳定、免费版就够用。后台私信里十个人里有八个都在问同三件事——去哪下载、怎么配置、连上之后怎么不踩坑。这篇就把 XShell 免费版的安装配置和使用从头到尾拆一遍,每一步该点什么、为什么要这么点、踩过的坑在哪,全给你写清楚。
1. XShell 是什么?搞清楚它在解决什么问题,再动手装
1.1 远程登录原理:用三句话讲清 SSH
SSH 全称 Secure Shell,翻译过来是“安全外壳”,它做的一件事就是让你坐在本地电脑前,通过网络登录到另一台服务器上执行命令。关键在一个“Secure”上:传统 Telnet 时代,用户名和密码在网络上几乎是明文传输的,抓包就能看光;而 SSH 会把你的键盘输入、服务器回显、认证信息全部加密,真正做到了“远程操作像坐在机房前面一样”。
XShell 就是在 Windows 上替你完成 SSH 协议通信的客户端程序。你可以把它理解为“电视机遥控器”:你在这头按按键,那头服务器执行操作,信号通过加密隧道传过去。它不提供图形桌面,也不给你“看到”服务器上的界面,它就是把你变成一个能敲命令的人。
1.2 XShell 免费版适合谁,以及和其他 SSH 工具的差异
免费版适合这几类人:刚入行或还在学校学运维的后端、第一次买了云服务器想部署网站的新手、日常需要在多台 Linux 主机之间来回切换的工程师。NetSarang 官方的免费许可面向家庭和教育用途,个人学习和测试基本功能全开,不用找破解、不用填序列号,这是它流行起来的主要原因。
市面上同类工具不少,我的建议是“看使用习惯选主用工具”,不一定要盲从:
| 工具 | 上手难度 | 多标签 | 会话保存 | 文件传输 | 最适合谁 |
|---|---|---|---|---|---|
| XShell | 低 | 支持 | 支持 | 配合 Xftp | 大量日常运维、频繁切换多服务器 |
| PuTTY | 低 | 不支持 | 仅保存会话配置 | 需配合 pscp | 临时连一次、极简场景 |
| Windows Terminal + OpenSSH | 中 | 支持 | 有限 | scp 命令 | 喜欢原生终端、不想装额外软件 |
| MobaXterm | 中 | 支持 | 支持 | 内置 SFTP | 需要一个工具解决远程+文件+联网的人 |
我平时就是在 XShell 和 Windows Terminal 之间切换。Windows Terminal 胜在原生和轻,但一旦需要维护多台生产服务器、给每个环境起名字、分组管理、保存连接配置,XShell 的会话管理器优势就出来了,这也是很多人最后回到 XShell 的原因。
1.3 新手最容易误解的三个点
第一,XShell 不是“服务器图形化管理工具”,它连上后看到的是命令行界面,操作 MySQL、Nginx、Docker 全靠命令。第二,它不仅能连 Linux,也支持连路由器、交换机、NAS、Windows 上开启的 OpenSSH 服务,只要对方支持 SSH 协议。第三,它不会“加速”你的服务器网络,单纯的远程控制工具,别指望它解决延迟和带宽问题。
2. 免费版下载和安装,保姆级步骤
2.1 官网领许可,只要邮箱就能拿到免费版
别去第三方软件站下载所谓“破解版”“免安装版”,风险高还容易带捆绑插件。正确的免费版获取方式很简单:打开 NetSarang 官网,进入 XShell 页面,选择“Home/Education”许可类型,在表单里填上姓名和常用邮箱。提交后系统会给你发一封带下载链接的邮件,点击链接就能下载。
如果你用 Microsoft Store,搜索 XShell 也能直接安装。但应用商店版本通常不是第一时间更新,有些功能策略和官网版略有差异,我的建议是优先用官网安装包,覆盖范围更广,路径可控。
2.2 安装过程中的关键节点
拿到安装包后,双击运行,其余步骤基本都是“Next”到底。这里有几个节点需要留意:
- 安装类型选“标准”即可,自定义安装适合想改安装目录或者不要某些组件的用户。
- 组件列表里如果出现不认识的插件、浏览器工具栏之类,去掉勾选。官网原包一般很干净,但如果经历过第三方下载站,这一步就是防火墙。
- 建议勾选“创建桌面快捷方式”,后续启动方便。
- 走到“选择开始菜单文件夹”时保持默认,安装完成后先重启一下 XShell 再配置,避免首次启动时有进程残留。
安装完不要急着关,打开 XShell,首次启动会弹“授权许可”相关界面。如果你申请了家庭/学校免费版,此时会要求填写注册邮箱和 Name。填完成功授权后,就不再弹出过期提示。
2.3 安装失败时怎么排查
后台总有人问“XShell 安装失败怎么办”。这个报错其实分多种情况,按出现频率我整理了排序:
| 失败现象 | 最常见原因 | 处理方式 |
|---|---|---|
| 双击安装包没反应 | 下载文件损坏 | 重新去邮件里复制链接,用浏览器重下 |
| 提示需要管理员权限 | 用户权限不足 | 右键安装包,选择“以管理员身份运行” |
| 安装到一半提示杀毒软件拦截 | 安全软件误报 | 暂时退出杀毒软件,装完再加信任 |
| 安装成功后启动闪退 | 旧版本残留配置冲突 | 先卸载旧版,重启机器,再装新版 |
| 提示“另一个程序正在安装” | Windows Installer 锁 | 重启电脑,清理安装进程 |
有个小技巧:如果官网下载很慢,可以把下载链接复制到下载工具里下载,但下载完一定校验一下文件体积,几十 MB 的安装包如果只有几 MB,大概率是下载不完整。
3. 新建会话与连接服务器:从密码登录到密钥登录
3.1 第一步:发起一个 SSH 会话
打开 XShell,左上角最显眼的按钮就是“新建”。点击后进入会话属性窗口,第一项是“连接”基本设置:
- 名称:给这台服务器起个容易识别的名字,比如
主站-生产、数据库-测试,比 IP 好记一百倍。 - 主机:填服务器 IP 地址或域名。
- 端口号:默认 22。如果你的服务器改了 SSH 端口,这里就填对应端口,比如 22xx。
- 协议:保持 SSH,别随手切成 Telnet,不加密,容易泄露密码。
填完主机和端口,切到“用户身份验证”标签,先填用户名和密码。用户名一般是root或者你创建的普通用户,密码就是该用户的密码。这就能发起第一次连接了。
第一次连接时,XShell 会弹出 SSH 安全警告,提示“该主机的指纹密钥不在本地缓存中”。这是正常现象,第一次见面的主机系统会主动“自报家门”,你核对一下 IP 正确后选择“接受并保存”,以后就不会再弹了。
3.2 连接不上的开场排查(网络、端口、服务)
连不上服务器是问得最多的问题。先别急着改配置,按下面顺序过一遍:
- 网络通不通。在本地 Windows 的 CMD 或 PowerShell 里执行
ping 服务器IP,如果 ping 不通,先解决链路问题。 - 端口通不通。执行
Test-NetConnection 服务器IP -Port 22,如果返回 False,检查服务器 SSH 服务是否启动、防火墙是否放行了 22 端口。 - SSH 服务是否存在。在服务器本机执行
systemctl status sshd(CentOS/RHEL 系)或systemctl status ssh(Ubuntu 系),看到 running 才正常。 - 云服务器要看“安全组”。云控制台里入方向规则必须放行 22 端口,很多新人买了腾讯云、阿里云,系统防火墙关了还连不上,就是卡在安全组上。
看完这条链路,大部分“Connection refused”和“Connection timed out”都能解决:refused 代表端口能通但服务没起来,timed out 代表数据包根本没到达服务器。
3.3 更安全的登录方式:SSH 密钥对
密码登录虽然简单,但每天被暴力扫描尝迷茫试是常事。密钥登录的原理是生成一对钥匙:公钥放到服务器上,私钥留在本地。连接时,服务器用公钥验证私钥,验证通过就放行,全程不需要输入密码。
用 XShell 生成密钥的路径:顶部菜单“工具” → “新建用户密钥生成向导”。选择 RSA 算法,位数建议 2048 位以上;如果你用的系统支持,也可以选 Ed25519,安全性高且生成速度快。向导会生成一对公钥和私钥,你可以把公钥保存成文件,也可以复制粘贴到服务器上。
部署公钥到服务器,最直接的方式是登录服务器后执行下面一段:
mkdir -p ~/.ssh && chmod 700 ~/.ssh echo '你生成的公钥内容' >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys然后回到 XShell,在会话属性里把“用户身份验证”的验证方法改成“Public Key”,浏览选择之前生成的私钥文件。连接时不再需要密码,只要私钥文件在本地,就能直接登录。
如果你是云服务器厂商给的密钥对,比如.pem文件,XShell 支持直接导入:顶部菜单“工具” → “导入 OpenSSH 密钥”,选中 pem 文件,导入后会生成一对新建会话可用的身份密钥。这一步很多人不知道,能省很多折腾时间。
3.4 保存与查看密码,安全底线别踩
XShell 允许在会话属性里保存密码,省去每次输入。但我要提醒一句:如果你在多台机器之间同步了配置文件,或者电脑容易被别人碰到,保存密码就是一个安全风险。更靠谱的做法是设置 XShell 的主密码,在“工具 → 选项 → 安全”里启用,主密码会加密本地保存的密码和密钥信息,之后查看已存密码时也会要求输入主密码。
热词里总有人搜“xshell 7 密码查看器”,其实就是这个场景:你之前保存了密码,现在想看一下具体是多少。打开“工具 → 密码管理器”,在“已保存的密码”里选择会话,主密码验证通过后就能看到明文。注意:如果你当初没设置主密码,密码查看功能会提醒你设置,这也是 XShell 在逼你提高安全性,别嫌麻烦。
3.5 连 VMware 虚拟机和云服务器的补充要点
如果你是要用 XShell 连接 VMware 里的 Linux 虚拟机,注意三点:
- 虚拟机网络模式用 NAT 或桥接。NAT 模式下虚拟机可以访问宿主机,宿主机也能通过 VMnet 网卡访问虚拟机;桥接模式下虚拟机更像局域网里一台独立机器。
- 虚拟机里执行
hostname -I或ip addr查看 IP,在 Windows 里先 ping 这个 IP,通了再用 XShell 连接。 - 虚拟机需要安装 SSH 服务。Ubuntu 上执行
sudo apt install openssh-server,安装后检查下22端口是否监听。
如果连不上虚拟机,优先看 VMware 的虚拟网络编辑器和虚拟机防火墙,新装的 Ubuntu 和 CentOS 防火墙默认策略不同,建议只放行所需端口,不要图省事直接iptables -F,尤其当你生产服务器上还有生产流量时。
4. 终端体验优化:中文乱码、配色、日志、快捷命令
4.1 先把中文显示弄正常(字体和编码)
XShell 连上服务器后发现中文变成方块、问号、乱码,几乎每个人都会碰到。这里要查两件事:编码和字体。
远程服务器输出的中文字符,一般是 UTF-8 编码。XShell 顶部菜单“查看(View)” → “编码(Encoding)”里,要选“Unicode (UTF-8)”。如果你连接的服务器是老系统、内部数据库导出的 SQL 文件用的是 GBK/GB2312,那就把编码切成“中文 Simplify (GBK)”。判断依据很简单:乱码时切换编码试试,总有一款能让中文恢复正常。
另一个导致乱码的隐蔽原因是字体。默认字体如果没有中文字形,中文就会变成空心方块。解决:在“工具 → 选项 → 常规/外观”里把字体改成“微软雅黑”“新宋体”等常见中文字体,并开启“使用字体平滑”。经验是优先选“Consolas”以上位或“Microsoft YaHei Mono”——不过 XShell 的字体选择其实只需要保证中英文字体都支持,像“微软雅黑”“JetBrains Mono”“Sarasa Term SC”这类都可以。
最后,给新手一个排查思路:如果切换编码和字体都无效,可能是服务器端 locale 没设置好。在终端输入locale,看到输出里LANG类似en_US.UTF-8或zh_CN.UTF-8都算正常;如果输出一行 bare 的LANG=C,可以临时用export LANG=zh_CN.UTF-8测试。
4.2 配色与日志:让长时间盯屏不难受
默认的黑底白字看久了确实容易疲劳。XShell 在“工具 → 选项 → 外观”里提供了多种配色方案,我自己的选择是深色背景、绿色文字,也就是常说的“黑客风”,但如果你长时间盯日志,绿字也有视觉压力,后来我改成灰白色文字加深色背景,眼睛放松很多。
日志记录是我非常推荐开启的功能。“工具 → 选项 → 日志”里勾选“启动日志记录”,指定一个日志目录,XShell 会把每个会话的屏幕输出保存成文件。线上事故复盘时,这段记录的参考价值不亚于服务器日志。注意控制日志增长:生产服务器上如果持续 tail 日志,本地日志文件可能很快膨胀,建议按日期轮转。
4.3 高频操作用快捷命令,别一遍遍手动输入
XShell 底部有“快捷命令”窗口。你可以把一组高频命令丢进去,比如:
cd /data/logs && tail -f app.logkill -3 PIDgit status && git log --oneline -10df -h && free -m
选中命令后双击一下,命令就会发送到当前会话执行。如果要执行多条命令,用“快捷命令 → 新建”把它们写成一组,XShell 会按顺序发送。这块配置我非常推荐抽时间做,省下来的时间都是实打实赚的。
4.4 多会话同时操作:写栏与“发送到所有会话”
当你有五台测试服务器需要同时部署同一个包时,一个个敲命令能累到怀疑人生。XShell 在“查看 → 撰写栏”里提供了一个神奇的入口:在撰写栏输入命令,然后选择“发送到所有会话”,回车后这条命令会同步发送到所有打开的会话窗口。常用于多节点同步重启服务、批量改配置文件后统一 reload。
多标签本身也是 XShell 的效率核心:每个标签一个会话,标签栏上右键可以关闭、复制会话、重命名标签。我把生产环境、测试环境、开发环境分组命名,打开 XShell 后不用想哪台机器是什么,标题栏一目了然。
4.5 配合 Xftp 传文件
XShell 官网还有一款姊妹工具 Xftp,同样面向家庭/学校免费。在 XShell 顶部工具栏点击“新建文件传输”按钮,或者直接用快捷键,就会唤起 Xftp 连接到同一台服务器。Windows 和服务器之间传文件,就像操作本地文件管理器一样拖拽即可。
没有 Xftp 也可以使用 XShell 自带的 SFTP 会话,但操作不如拖拽直观。碰上需要传压缩包、导出数据库文件、上传 SSL 证书这类场景,Xftp 是很好的补充,安装时同样选择免费许可,名字和邮箱填好即可。
5. XShell 的进阶用法:登录脚本、隧道转发、实用命令
5.1 登录脚本:连上后自动进入工作状态
每次登录都要手动cd到项目目录、设置环境变量,烦了没?XShell 在“会话属性 → 登录脚本”里提供了自动化方案:
- 勾选“连接后执行脚本”。
- 在脚本命令里写入要自动执行的命令,比如:
cd /opt/myappexport JAVA_HOME=/usr/local/jdktail -n 20 logs/run.log
这样每次连接会话,XShell 会自动发送这些命令,你可以等着看日志出现。需要谨慎的是:不要在生产会话里默认执行rm -rf xxx这类危险命令。自动化程度越高,误触风险越大,脚本里的每一条命令都要经得起复核。
5.2 SSH 本地端口转发:用跳板机访问内网服务
一个很重要但常被忽略的 XShell 功能是 SSH 端口转发。场景很经典:线上数据库在安全的内网网段,本地电脑不能直接访问,但你有能连接到跳板机的 SSH 权限。这时候可以在 XShell 会话属性里找到“连接 → SSH → 隧道”,添加一条本地转发规则:
- 源主机:localhost
- 监听端口:33060
- 目标主机:10.0.0.5(内网数据库 IP)
- 目标端口:3306
设置完成后,先让 XShell 成功连接跳板机,然后本地打开 Navicat,连接127.0.0.1:33060,数据库就出现在你面前了。数据全程走 SSH 加密隧道,数据库端口不会直接暴露公网,这对线上环境是非常踏实的访问方式。使用场景还包括:访问跳板机背后的 Web 管理后台、连接内网 Redis、通过跳板机访问不开公网端口的服务。
5.3 “回退目录”这类命令疑问到底在问什么
搜索热词里有“xshell 命令回退目录”,其实问的是 Linux 基础命令,只不过很多人是在 XShell 窗口里下意识地把 Windows 的习惯带了进来。在 XShell 窗口里,你敲的不是 Windows 命令,而是 Linux 命令。最常见的回退操作是:
cd ..:返回上一级目录cd -:回到上一次所在的目录pwd:显示当前完整路径
这三个足够覆盖日常“我跑到哪去了所以退一步”的场景。如果愿意更精细一点,可以用cd ~直接回当前用户家目录。XShell 本身不会帮你记住目录历史,它只是忠实地把键盘输入传给服务器,所以这类操作本质上是 Linux shell 的cd问题。
6. 常见问题速查与我的几个习惯
6.1 高频报错速查表
我把日常答疑时遇到的 XShell 与 SSH 报错整理成表,排查时对着看:
| 报错提示 | 含义 | 解决切入点 |
|---|---|---|
| Connection timed out | 数据包没到达服务器 | 网络链路、安全组、防火墙 |
| Connection refused | 端口通但服务未监听 | SSH 服务状态、端口号、sshd 配置 |
| Host key verification failed | 主机指纹发生变化 | 服务器重装过系统,删除旧指纹并重新接受 |
| Permission denied (password) | 密码错误次数过多或账户禁用 | 重置密码、检查账户锁 |
| Permission denied (publickey) | 密钥不匹配 | authorized_keys 内容、私钥格式、权限 |
| User canceled connection | 用户主动取消 | 检查是否点了取消或超时 |
遇到 Host key verification failed 时,需要在 XShell“工具 → 主机密钥管理器”里找到对应 IP 删掉旧记录,或直接在弹窗里按提示更新。如果你确定服务器刚重装过,接受新指纹是正常的;如果没重装过,反而要警惕中间人,先别急着接受。
6.2 自动断连:心跳包设置
经常挂着 XShell 干别的事,回来发现连接断了,代码里也没报错,单纯就是会话超时。原因多是本地或路由器把长时间空闲的连接清理了。XShell 的解决方案在“工具 → 选项 → 连接”里,勾选“保持连接活动”,设置发送心跳间隔,比如 60 秒。连接建立后,XShell 每隔 60 秒发送一个极短的请求,保证会话不被判定为“闲置”。
如果心跳包开了还是断,就要看服务器端 sshd_config 里的ClientAliveInterval和ClientAliveCountMax配置,但一般先调好客户端心跳,能解决九成问题。
6.3 我个人常用的几个习惯
用 XShell 这些年,我攒了几个不算技巧但很管用的习惯:
第一,会话文件夹按环境划分。XShell“会话管理器”里可以新建文件夹,我固定分三个:生产环境、测试环境、开发环境。生产环境文件夹加密码?虽然没有直接对文件夹加密码的选项,但我会用主密码保护整个配置。生产环境会话一律只走密钥登录,不保存密码。
第二,连接生产服务器前先打开日志记录。每次上线操作前开启日志,操作完关掉,并把日志文件名改成“日期+服务器名”,几个月后出问题还能找到当时的操作记录。
第三,新端口修改前先放行。修改 SSH 默认端口看起来能防扫描,但在云服务器上操作顺序反了会直接把自己锁在门外:先改安全组放行新端口,再改 sshd_config 端口,最后重启服务,旧端口确认不需要后再删安全组规则。
第四,善用hostname -I。每次连接虚拟机前先确认 IP,不凭印象填地址,避免连到同名机器上改错了环境。确认连接目标的习惯,比任何工具技巧都重要。
XShell 这个工具本身不难,难的是把习惯养好。你把会话管理、密钥认证、日志留痕这三件套做扎实了,日常维护工作会轻松一大截。