Linux VPS 无法通过 SSH 连接时,客户端通常会提示 Connection timed out、Connection refused 或 Permission denied。这些报错看起来都是“连不上服务器”,但对应的原因并不相同。
问题可能出在 IP、端口、用户名和本地网络,也可能是服务商安全组、系统防火墙、SSH 服务或登录权限出现异常。当大家遇到这种情况的时候不要反复尝试密码,也不要马上重装系统,先根据客户端返回的报错来确定排查方向,再按照本文的顺序逐项检查。
一、根据 SSH 报错判断问题类型
SSH 客户端返回的提示,可以帮助我们判断问题出在网络连接、服务端口还是身份验证。先看完整报错,然后再进行后面的检查,可以减少很多没有必要的操作。
| 报错提示 | 通常代表什么 | 优先检查 |
|---|---|---|
| Connection timed out | 客户端无法连接目标 SSH 端口 | IP、端口、网络、安全组和防火墙 |
| Connection refused | 目标 IP 可以访问,但该端口没有服务接收连接 | SSH 服务、监听端口和配置文件 |
| Permission denied | 已经连接到 SSH 服务,但身份验证失败 | 用户名、密码、私钥和登录权限 |
| No route to host | 客户端无法找到通往目标 IP 的可用路由 | IP、VPS 状态、网络路由和防火墙 |
| Host key verification failed | 本地保存的服务器指纹与当前服务器不一致 | 是否重装过系统或更换过服务器 |
二、检查 VPS 状态和 SSH 登录信息
正式修改服务器配置之前,先排除 VPS 状态、IP、端口和用户名填写错误。很多 SSH 连接故障,并不需要进入系统修改配置。
1. 确认 VPS 正在运行
登录 VPS 服务商控制面板,确认服务器状态为 Running、Active 或其他正常运行状态。
同时检查以下情况:
- VPS 是否已经到期或因为欠费暂停;
- 服务商是否正在维护机房或网络;
- VPS 是否正在重装系统、迁移或恢复快照;
- 服务器公网 IP 是否已经更换;
- IP 是否进入
Nullroute或其他网络限制状态。
如果 VPS 已经停止,可以先从控制面板启动,等待系统完成开机后再测试 SSH。
如果您使用的是搬瓦工VPS,还需要结合后台 KiwiVM 面板中的服务器状态、SSH 端口和网络信息进行检查,具体可以参考:搬瓦工 SSH 连不上怎么办?最全排查流程与修复命令实战指南。
2. 检查 IP 地址和 SSH 端口
复制 IP 时注意不要带入空格、中文符号或其他字符。SSH 默认使用 22 端口,但部分服务商会分配随机端口,安装面板或执行安全脚本后也可能修改 SSH 端口。
使用默认端口连接:
ssh root@VPS_IP
使用自定义端口连接,例如 2222:
ssh -p 2222 root@VPS_IP
如果使用 PuTTY、Xshell、FinalShell 或 MobaXterm,也要检查客户端填写的端口是否与服务商后台一致。
3. 检查 SSH 用户名
普通 VPS 经常使用 root 登录,但部分云服务器镜像会提供其他默认用户名,例如:
- Ubuntu:
ubuntu; - Debian:
debian; - CentOS:
centos; - Amazon Linux:
ec2-user。
具体用户名应以服务商后台、开通邮件或镜像说明为准。用户名填写错误时,即使密码正确,也会提示 Permission denied。
4. 检查密码或 SSH 私钥
SSH 密码区分大小写,输入前检查键盘的 Caps Lock 是否误触。复制密码时,也不要把前后的空格一起复制进去。
如果客户端提示:
Permission denied (publickey)
通常说明服务器要求使用 SSH 私钥登录,而不是密码错误。使用私钥连接的命令如下:
ssh -i /私钥文件路径 -p 22 用户名@VPS_IP
使用图形客户端时,需要在客户端的身份验证设置中选择对应的私钥文件。
5. 更换本地网络测试
电脑能够正常打开网页,并不代表当前网络一定允许访问 SSH 端口。公司网络、校园网、公共 Wi-Fi 或部分宽带线路,可能会限制 22 等端口。
可以让电脑暂时连接手机热点,再尝试一次 SSH,如果更换网络后能够连接,那么问题可能出在原来的宽带、路由器或运营商链路,这时就不需要修改 VPS 配置。
三、检查网络链路、SSH 端口和云防火墙
当我们确认了 VPS 正在运行,登录信息也没有填错后,下一步要查看当前网络能否连接服务器的 SSH 端口。这里只看 Ping 还不够,接下来还要测试 SSH 端口能不能连通。
1. 使用 Ping 辅助检查网络
Windows 用户打开命令提示符,macOS 或 Linux 用户打开终端,然后执行:
ping VPS_IP
如果能够收到回复,只能说明目标 IP 可以响应 ICMP,不能代表 SSH 端口已经放行,也不能说明 SSH 服务正在运行。
如果 Ping 不通,也不能说明 VPS 宕机或 IP 被封。服务商网络、云防火墙或系统防火墙都有可能会关闭 ICMP 响应,即使 SSH 可以正常连接,Ping 仍然可能超时。
2. 在 Windows 测试 SSH 端口
Windows PowerShell 可以使用 Test-NetConnection 测试 TCP 端口:
Test-NetConnection VPS_IP -Port 22
如果 SSH 使用的是 2222 端口:
Test-NetConnection VPS_IP -Port 2222
重点查看结果中的:
TcpTestSucceeded
结果为 True,说明当前网络可以连接该端口,此时如果仍然无法登录,应检查用户名、密码、私钥和 SSH 登录权限。
结果为 False,说明 TCP 连接没有建立,需要继续检查云防火墙、系统防火墙和 SSH 服务。
3. 在 macOS 或 Linux 测试 SSH 端口
macOS 和多数 Linux 系统可以使用 nc 命令:
nc -vz VPS_IP 22
如果使用自定义端口,例如 2222:
nc -vz VPS_IP 2222
返回 succeeded 或 open,说明端口可以访问;如果一直超时或提示失败,需要继续检查网络和服务器端配置。
4. 使用不同地区的在线工具测试
本地测试只能反映当前宽带到 VPS 的连接情况,为了进一步判断问题出在本地网络,还是服务器端口在多个地区都无法访问,可以使用在线 TCP 端口检测工具。具体操作可以参考:如何检测 VPS 端口是否被封?三款在线工具推荐,输入 VPS IP 和实际 SSH 端口进行检测。
也可以通过 ping.pe 使用教程,查看不同国家和地区能否连接目标端口。
测试结果可以按下面的情况判断:
- 国内外节点全部无法连接:检查 SSH 服务、端口和防火墙;
- 国外可以连接,国内多数地区无法连接:可能是国内网络链路、IP 或端口受到限制;
- 其他地区可以连接,只有当前网络失败:检查本地宽带、路由器或运营商线路;
- 端口可以连接,但 SSH 仍然登录失败:检查账户和身份验证设置。
5. 检查服务商安全组和云防火墙
不少云服务器在系统防火墙之外,还有一层由服务商控制的网络防火墙,常见名称包括:
Security Group;Cloud Firewall;Network ACL;- 入站规则;
- 端口规则。
这时需要我们进入服务商控制面板,确认已经放行实际使用的 SSH TCP 端口。例如 SSH 使用 22,就需要允许 TCP 入站访问 22 端口。
如果规则只允许指定来源 IP,还要确认当前宽带的公网 IP 仍在允许范围内。家庭宽带重新拨号后,公网 IP 可能发生变化,原来的放行规则也会随之失效。
四、通过控制台检查 SSH 服务和系统配置
如果 TCP 端口无法连接,或者修改 SSH 配置后彻底失联,需要通过服务商提供的控制台进入系统。控制台通常不依赖 SSH 服务,即使端口或防火墙配置错误,也可以用来修复服务器。
服务商后台常见的控制台名称包括:
Web Console;VNC;Serial Console;Emergency Console;Rescue Mode。
进入控制台后,可以按照下面的顺序检查。
1. 检查 SSH 服务是否运行
Debian、Ubuntu 使用:
systemctl status ssh
CentOS、Rocky Linux、AlmaLinux 使用:
systemctl status sshd
如果服务没有运行,可以执行下面的命令启动并设置开机运行。
Debian、Ubuntu:
systemctl start ssh
systemctl enable ssh
CentOS、Rocky Linux、AlmaLinux:
systemctl start sshd
systemctl enable sshd
如果启动失败,不要反复执行启动命令,应继续检查 SSH 配置语法和系统日志。
2. 检查 SSH 实际监听端口
执行:
ss -lntp | grep ssh
也可以检查默认的 22 端口:
ss -lntp | grep ':22'
如果没有任何输出,说明 SSH 没有监听该端口,或者 SSH 服务没有正常启动。
查看 SSH 当前生效的端口配置:
sshd -T | grep '^port'
如果系统提示找不到命令,可以尝试:
/usr/sbin/sshd -T | grep '^port'
假设输出为:
port 2222
那么客户端需要使用 2222 端口,而不是默认的 22。
3. 检查 SSH 配置文件
SSH 主配置文件通常位于:
/etc/ssh/sshd_config
查看端口和登录认证配置:
sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication|pubkeyauthentication)'
如果提示找不到命令,再执行:
/usr/sbin/sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication|pubkeyauthentication)'
常见配置含义如下:
Port 22
表示 SSH 使用 22 端口。
PermitRootLogin yes
表示允许 root 登录。
PermitRootLogin prohibit-password
表示 root 只能通过 SSH 密钥登录,不能使用密码。
PasswordAuthentication no
表示服务器已经关闭密码登录。
PubkeyAuthentication yes
表示允许使用 SSH 公钥认证。
如果您准备在恢复连接后改用密钥认证,可以继续参考:搬瓦工 SSH 密钥登录教程:如何禁用密码登录提升 VPS 安全性。操作时要先确认 SSH 密钥能够正常登录,再关闭密码登录,避免把自己锁在服务器外面。
修改配置前,建议先备份:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
修改完成后不要马上重启 SSH,先检查配置语法:
sshd -t
如果没有输出,通常表示语法检查通过;如果出现报错,需要根据提示修正对应配置。
确认语法没有问题后,再重启 SSH。
Debian、Ubuntu:
systemctl restart ssh
CentOS、Rocky Linux、AlmaLinux:
systemctl restart sshd
使用控制台修改 SSH 时,不要提前关闭控制台窗口。先重新打开一个 SSH 客户端确认可以登录,再退出控制台,避免修改错误后再次失联。
4. 检查系统防火墙
Debian、Ubuntu 常用 UFW,查看当前规则:
ufw status numbered
放行默认 SSH 端口:
ufw allow 22/tcp
如果使用自定义端口,例如 2222:
ufw allow 2222/tcp
CentOS、Rocky Linux、AlmaLinux 常用 Firewalld,查看当前规则:
firewall-cmd --list-all
放行默认 SSH 端口:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
使用自定义端口时,将 22 替换为实际端口。
如果您准备更换 SSH 端口,需要先放行新端口并确认可以登录后,再删除旧端口规则。不要先关闭 22 端口,否则可能把自己锁在服务器外面。
5. 检查是否被 Fail2Ban 封禁
连续多次输入错误密码后,Fail2Ban 可能会封禁当前公网 IP。
查看 SSH 规则状态:
fail2ban-client status sshd
如果封禁列表中包含当前公网 IP,可以执行:
fail2ban-client set sshd unbanip 你的公网IP
如果系统提示找不到 fail2ban-client,说明服务器可能没有安装 Fail2Ban,可以跳过这一项。
6. 检查磁盘、内存和系统负载
磁盘空间或 inode 被占满后,SSH 服务可能无法正常写入文件,登录过程也可能出现异常。
检查磁盘空间:
df -h
检查 inode:
df -i
检查内存:
free -m
检查系统负载:
uptime
如果根分区、/var 分区或 inode 使用率达到 100%,需要先清理异常日志、缓存或无用文件,再测试 SSH。
7. 查看 SSH 日志
Debian、Ubuntu 可以执行:
journalctl -u ssh -n 100 --no-pager
也可以查看:
tail -n 100 /var/log/auth.log
CentOS、Rocky Linux、AlmaLinux 可以执行:
journalctl -u sshd -n 100 --no-pager
也可以查看:
tail -n 100 /var/log/secure
日志中可能出现用户名不存在、密码错误、私钥不匹配、root 登录被禁止、配置文件语法错误、端口被占用或 IP 被封禁等信息。根据日志中的具体提示处理,会比反复修改配置更有效。
8. 处理服务器指纹不一致
如果 VPS 重装过系统、重置过 SSH,或者同一个 IP 更换了服务器,客户端可能提示:
Host key verification failed
或者:
REMOTE HOST IDENTIFICATION HAS CHANGED
确认服务器确实由您本人重装或更换后,可以删除本地保存的旧指纹:
ssh-keygen -R VPS_IP
使用自定义端口时,可以执行:
ssh-keygen -R "[VPS_IP]:2222"
删除旧记录后重新连接,客户端会要求确认新的服务器指纹。
如果您没有重装系统,也没有收到服务商更换服务器的通知,先不要继续连接。应该先核对 VPS IP 和后台状态,确认这次指纹变化确实来自自己的服务器后,再删除旧记录并重新连接。
如果您通过控制台检查后仍然无法恢复 SSH,并且问题涉及 VPS 宿主机、服务器 IP、机房网络或控制台无法使用,可以参考:搬瓦工客服支持范围详解:哪些问题可以提交工单?,先判断问题是否属于官方处理范围,再决定是否提交工单。
五、总结
Linux VPS SSH 连接失败后,先看客户端返回的是连接超时、连接被拒绝、身份验证失败,还是服务器指纹异常,再处理对应的问题。客户端无法连接端口时,检查 IP、网络、安全组和防火墙;端口可以访问但无法登录时,检查用户名、密码、私钥和 SSH 登录权限。
如果已经无法通过 SSH 进入系统,可以使用服务商提供的 Web Console、VNC、Serial Console 或 Rescue Mode 检查 SSH 服务和系统配置。只要控制台仍然可以使用,大多数端口、防火墙和 SSH 配置问题都不需要重装系统。
重装系统应放在最后考虑,因为重装会清除原有数据和环境,也无法解决 IP 被限制、上游网络异常或服务商云防火墙配置错误等问题。
| 套餐 | CPU | 内存 | 硬盘 | 流量 | 带宽 | 机房 | 价格 | 购买 |
|---|---|---|---|---|---|---|---|---|
| KVM (最便宜) | 2核 | 1GB | 20GB | 1TB | 1Gbps | 9个 | $49.99/年 | 立即选购 |
| 3核 | 2GB | 40GB | 2TB | 1Gbps | 9个 | $52.99/半年 | 立即选购 | |
| CN2 GIA-E (最推荐) | 2核 | 1GB | 20GB | 1TB | 2.5Gbps | 15个 | $49.99/季度 | 立即选购 |
| 3核 | 2GB | 40GB | 2TB | 2.5Gbps | 15个 | $89.99/季度 | 立即选购 | |
| SLA (SLA 保障) | 2核 | 1GB | 20GB | 1TB | 2.5Gbps | 1个 | $65.89/季 | 立即选购 |
| 3核 | 2GB | 40GB | 2TB | 2.5Gbps | 1个 | $116.99/季 | 立即选购 | |
| 香港 (高端) | 2核 | 2GB | 40GB | 0.5TB | 1Gbps | 15个 | $89.99/月 | 立即选购 |
| 4核 | 4GB | 80GB | 1TB | 1Gbps | 15个 | $155.99/月 | 立即选购 | |
| 大阪 (高性价比) | 2核 | 2GB | 40GB | 0.5TB | 1.5Gbps | 15个 | $49.99/月 | 立即选购 |
| 4核 | 4GB | 80GB | 1TB | 1.5Gbps | 15个 | $86.99/月 | 立即选购 | |
选择建议 入门使用KVM 套餐价格最低,适合建站、学习 Linux、简单测试和预算有限的新手用户。 综合推荐CN2 GIA-E 套餐线路更好、可选机房更多,适合长期使用,也是多数用户优先考虑的方案。 高端需求香港、东京、大阪等高端线路价格更高,适合对国内访问速度、低延迟和稳定性要求较高的用户。 |
||||||||
套餐汇总:搬瓦工在售方案汇总 | 购买教程:搬瓦工注册与购买教程 | 优惠码:最新搬瓦工优惠码 |
||||||