xshell 连接 linux 失败 检查端口和防火墙
Xshell6是一个强大的安全终端模拟软件。 Xshell6支持SSH1,SSH2和TELNET 协议。用户可以通过家里的网络连接远程主机,方便用户在家处理突发事情,可以让用户轻松管理远程主机。 Xshell6还可以上传下载文件,非常方便。
解决 Xshell 连接 Linux 失败问题,重点检查 TCP 端口连通性与防火墙设置。使用 Windows PowerShell 测试端口,登录服务器控制台验证 SSH 服务监听及 UFW 规则,确保网络路径畅通后再进行身份验证。
Xshell 连接 Linux 服务器失败是常见运维问题,但“连不上”的原因各不相同。密码输错属于认证阶段的问题,而端口不通则是网络连接阶段的阻碍。在反复尝试登录前,先确认 TCP 端口能否到达,再检查服务器是否监听以及防火墙是否放行,能大幅缩短排查时间。以下操作以 Windows 客户端连接 Ubuntu 服务器为例,示例地址为 192.0.2.10,SSH 端口为 22,实际使用时请替换为获准管理的服务器地址和真实端口。
Xshell 会话属性中的连接设置,显示协议、主机和端口配置
1. 核对 Xshell 的地址、协议和端口
打开 Xshell,右键点击目标会话选择【属性】。在左侧类别中点击【连接】,右侧面板会显示基本连接信息。
确认【协议】下拉菜单已选中 SSH。检查【主机】栏填写的 IP 地址或域名是否准确,【端口号】是否与管理员提供的一致。虽然 SSH 默认端口是 22,但出于安全考虑,许多服务器会修改为非标准端口,切勿直接覆盖现有配置。
同时留意是否需要通过 网络工具、跳板机或代理访问。如果目标是私网地址,必须确保当前 Windows 机器处于相应的网络环境中。保留完整的错误提示也很关键:提示“超时”通常意味着连接未及时建立,提示“拒绝连接”可能表示服务未监听或主动拒绝,而“认证失败”则说明网络已通,问题出在账号密码或密钥上。
1. 核对 Xshell 的地址、协议和端口
2. 在 Windows PowerShell 测试单个 TCP 端口
不要直接在 Xshell 中盲目重试,先在 Windows 本地测试网络连通性。按下 Win + S,搜索并打开 Windows PowerShell。
执行以下命令测试目标服务器的指定端口:
Test-NetConnection -ComputerName 192.0.2.10 -Port 22
请将 192.0.2.10 替换为你的服务器 IP,22 替换为实际端口。观察输出结果中的 TcpTestSucceeded 字段:
-
True:表示 TCP 连接测试成功,网络路径和端口是通的。但这不代表 SSH 服务正常或账号密码正确,仅说明网络层无阻碍。
-
False:表示未能建立 TCP 连接。此时应重点排查服务器监听状态、防火墙规则或中间网络设备,而不是反复提交密码。
注意,Ping 命令的结果不能替代端口测试。服务器可能禁用了 ICMP 回显(即 Ping 不通),但仍允许 SSH 连接;反之,能 Ping 通也不代表 22 端口已开放。
在 PowerShell 中使用 Test-NetConnection 测试 TCP 端口连通性
3. 通过服务器控制台检查监听
如果 PowerShell 测试显示端口不通,且你拥有服务器管理权限,可以通过云服务商的控制台、虚拟机管理界面或现场终端登录服务器。这一步不需要通过 SSH 远程连接,因此不受网络故障影响。
以 Ubuntu 系统为例,登录后执行以下只读查询命令:
systemctl status ssh --no-pager sudo ss -lntp
第一条命令查看 SSH 服务的运行状态,确认其处于 active (running) 状态。第二条命令列出所有监听的 TCP 端口。在输出列表中查找 sshd 进程对应的行,确认其监听的地址和端口。
-
如果监听地址是
127.0.0.1:22,说明服务只允许本地连接,外部无法直接访问。 -
如果监听地址是
0.0.0.0:22或*:22,说明服务正在监听所有网络接口。 -
如果没有找到对应端口的监听记录,说明 SSH 服务未启动或配置有误,需由管理员核对配置文件。
不同 Linux 发行版的服务名称可能不同(如 CentOS 可能是 sshd),请根据实际系统调整命令。此步骤仅为检查,不建议在无备用控制台的情况下随意重启服务。
4. 核对主机防火墙与外层规则
确认服务正在监听后,若端口仍不通,需检查防火墙。Ubuntu 默认常使用 UFW(Uncomplicated Firewall)管理防火墙规则。
在服务器终端执行:
sudo ufw status verbose
检查输出内容:
-
Status: active:表示防火墙已启用。查看下方的规则列表,确认是否有允许 SSH 或特定端口的规则。例如
22/tcp ALLOW IN Anywhere。如果使用的是非标准端口,需确保该端口已被明确允许。 -
Status: inactive:表示主机防火墙未启用。但这并不意味着网络层没有阻挡。
对于云服务器,还需检查云平台提供的“安全组”或“云防火墙”规则。这些规则位于实例网卡之外,优先级往往高于主机内部防火墙。确认安全组中已放行来自你 Windows 机器公网 IP(或所在网段)对目标 TCP 端口的访问请求。如果有路由器端口映射,还需核对公网入口端口与服务器内部端口是否一致。
修改规则时,务必保留当前的控制台连接作为回退通道,避免误操作导致完全失联。不要为了排错而临时关闭所有防火墙或对所有地址开放所有端口。
使用 sudo ufw status verbose 查看防火墙详细规则
5. 重测端口并验证一次登录
完成上述检查和修正后,回到 Windows 电脑,再次运行 PowerShell 端口测试命令,确认 TcpTestSucceeded 变为 True。
随后打开 Xshell,双击目标会话进行连接。如果这是首次连接或主机密钥已变更,Xshell 会弹出主机密钥确认窗口,请核对管理员提供的指纹信息后接受。进入认证界面后,输入正确的用户名和密码(或使用密钥)登录。
若端口测试已通过但依然认证失败,则问题转向账户状态、密码策略或密钥配置,无需继续调整防火墙。建议记录最终的端口号、网络前提条件以及防火墙规则核对结果,以便后续维护。本文提供的命令仅用于说明检查方法,具体连接结果请以现场环境为准。
Xshell 成功建立 SSH 连接并显示命令提示符

































