Xshell 连接不上 Linux 服务器怎么办?

文章导读
遇到 Xshell 连不上 Linux 服务器,先别急着重装软件,大多数情况是网络不通、SSH 服务没起或者防火墙拦截,按网络 - 服务 - 配置的顺序排查最快。
📋 目录
  1. ⚠️ 操作前安全警告
  2. 命令速用版
  3. 分步处理与修复
  4. Xshell 客户端常见配置检查
  5. 怎么验证是否生效
  6. 常见坑
A A

遇到 Xshell 连不上 Linux 服务器,先别急着重装软件,大多数情况是网络不通、SSH 服务没起或者防火墙拦截,按网络 - 服务 - 配置的顺序排查最快。

先说结论:优先检查本地到服务器的网络连通性和 22 端口可达性,再确认服务器内部 SSH 服务状态。

  • 先确认:本地能否 ping 通服务器 IP,PowerShell 能否连通 22 端口
  • 先处理:若有控制台权限,检查 sshd 服务状态及防火墙规则(操作前务必保留控制台会话)
  • 再验证:修改配置后重启服务,尝试重新连接并查看日志

⚠️ 操作前安全警告

在修改 SSH 配置或防火墙规则前,请务必保持云厂商控制台(VNC/终端)登录状态不要关闭。一旦配置错误导致 SSH 断开,控制台是唯一的救援通道。

命令速用版

如果你还能通过云厂商控制台或其他方式登录服务器,可以直接运行以下命令快速检查:

systemctl status sshd
ss -tlnp | grep 22
firewall-cmd `--list-ports`

如果是 Windows 本地电脑排查端口,使用 PowerShell 测试(telnet 默认未启用):

Test-NetConnection -ComputerName <服务器 IP> -Port 22

分步处理与修复

1. 检查网络连通性

在本地电脑打开命令提示符,ping 服务器 IP。如果丢包或不通,检查本地网络或云服务器安全组是否放行了 ICMP 协议。

2. 检查 SSH 端口

使用 PowerShell 或 nc 命令测试 22 端口(默认端口)是否开放。如果端口不通,可能是云服务器安全组未放行 TCP 22,或者服务器内部防火墙拦截。

Xshell 连接不上 Linux 服务器怎么办?

3. 检查并启动 SSH 服务

通过云控制台 VNC 或物理终端登录服务器,运行以下命令确保服务运行:

# CentOS/RHEL
systemctl status sshd
systemctl start sshd
systemctl enable sshd

# Ubuntu/Debian
systemctl status ssh
systemctl start ssh
systemctl enable ssh

4. 配置防火墙开放端口

CentOS 7+ 常用 firewalld,Ubuntu 常用 ufw。确认 22 端口在允许列表中,若不在需执行以下命令:

# firewalld (CentOS/RHEL)
firewall-cmd `--add-port`=22/tcp `--permanent`
firewall-cmd `--reload`

# ufw (Ubuntu/Debian)
ufw allow 22/tcp
ufw reload

5. 检查 SSH 配置文件

如果端口通但密码报错,查看配置文件是否限制了登录:

vim /etc/ssh/sshd_config

检查以下项:

  • Port 22:确认端口未被修改
  • PermitRootLogin yes:确认是否允许 root 登录(生产环境建议禁用 root 改用普通用户)
  • PasswordAuthentication yes:确认是否允许密码认证

修改后需重启服务:systemctl restart sshd

Xshell 连接不上 Linux 服务器怎么办?

6. 查看认证日志

查看/var/log/secure 或/var/log/auth.log,确认是否触发了 fail2ban 或禁止了 root 登录。

Xshell 客户端常见配置检查

如果服务器端正常,检查 Xshell 自身设置:

  • 会话属性:右键会话 - 属性,确认主机 IP、端口号(默认 22)无误。
  • 代理设置:确认未错误配置 SOCKS 或 HTTP 代理,除非确实需要通过代理连接。
  • SSH 版本:在属性 - SSH - 安全性中,尝试调整密钥交换算法或加密算法,兼容旧版服务器。
  • 身份验证:确认选择了正确的登录方法(密码或 Public Key),密钥文件路径是否正确。

怎么验证是否生效

完成上述调整后,在 Xshell 中重新点击连接。如果成功进入命令行界面,说明恢复。若仍失败,观察 Xshell 下方的状态栏报错信息,是“连接失败”还是“认证失败”,前者是网络/端口问题,后者是账号密码/密钥问题。

常见坑

1. 云服务器安全组:很多新手只在系统内开了防火墙,忘了云控制台的安全组规则也需要放行 22 端口。

2. SSH 配置变更:修改/etc/ssh/sshd_config 后忘记重启 sshd 服务,导致配置未生效。

3. 密钥权限:如果使用密钥登录,私钥文件权限过于开放(如 777)会导致 SSH 客户端拒绝使用。

4. Root 登录限制:部分系统默认禁止 root 远程登录,需创建普通用户或使用密钥认证。