VPS 无法连接 SSH?3 分钟无损自救排查指南
使用 VPS 最头疼的瞬间,莫过于终端突然弹出 Connection timed out 或者 Connection refused。
很多新手遇到连不上,第一反应就是去后台“一键重装系统”或者给客服提工单。重装意味着所有环境清空,提工单又要等几个小时。
其实大多数 SSH 连接问题都可以按标准流程快速定位并自救恢复。收藏好下面这套速查清单。
第一步:测延迟与端口(区分是网络问题还是机器关机)
先确定是机器死了,还是你和机器之间的路断了。
在本地电脑的终端(Windows 的 CMD / PowerShell,或 Mac/Linux 的终端)执行:
1. Ping 测试(看 IP 连通性)
1 | ping 你的VPS_IP |
- 如果全是超时(Request timed out):可能被安全设备拦截,或者商家机房整体宕机。
- 如果 Ping 正常有延迟:说明底层网络连通,机器大概率活着。
2. Tcping 端口测试(核心排查点)
有时 Ping 能通,但 SSH 端口(默认 22 或自定义端口)被阻断:
1 | # Windows 可下载 tcping 工具,或用 powershell 测试: |
- TcpTestSucceeded : False ➔ 说明端口握手失败(服务没起、防火墙拦截、或端口被封)。
- TcpTestSucceeded : True ➔ 说明网络完全通畅,大概率是密钥权限、用户名密码错误或 sshd 配置写崩。
第二步:登录商家控制台的 VNC(终极急救通道)
只要端口测不通,立刻打开 VPS 商家后台,找到 “VNC” 或 “Console” 按钮点进去。
VNC 是直接接在虚拟机显卡上的屏幕,相当于你坐在服务器物理机面前,就算外界网络完全断开,VNC 也一定能登进去!
在 VNC 窗口里输入用户名(通常是 root)和密码登录。
第三步:在 VNC 里排查三处核心元凶
登进 VNC 后,依次敲入以下命令:
1. 检查 SSH 服务是不是挂了
1 | systemctl status sshd || systemctl status ssh |
- 如果显示
inactive (dead)或failed,执行看日志:如果之前手抖改错了1
2systemctl restart sshd
journalctl -u sshd -n 20 --no-pager/etc/ssh/sshd_config,日志里会直接指出哪一行语法错误,修改正确后重启即可。
2. 检查是不是防火墙手贱把自己关外面了
很多人装完 ufw 或 iptables 顺手启用,忘了开放 SSH 端口:
1 | # 临时清空 iptables 规则(快速恢复连接) |
执行完立刻在本地尝试重连,如果能连上,证实就是防火墙配置错误。
3. 检查机器是不是内存爆了(OOM)
执行 dmesg -T | grep -i oom,如果看到 Out of memory: Kill process,说明机器内存被跑满,Linux 内核为保命把 sshd 进程杀掉了。关掉吃内存的罪魁祸首进程即可。
第四步:如果确认是 IP 被阻断怎么救?
如果海外测速工具(如 Ping.pe)显示国外全绿、国内全红,说明该 IP 的端口已无法直连。
无损抢救方案:
- 换端口:如果只是 22 端口被盯上,改个高位端口(如 43222)可能瞬间复活。
- 利用 IPv6:很多商家的 VPS 自带免费的 IPv6 地址。如果你的本地宽带支持 IPv6,直接用 IPv6 地址连接 SSH,完全不受 IPv4 阻断影响。
- 加装 Cloudflare 免费反代穿透:通过 Cloudflare Tunnel 将 SSH 流量穿透出来,无需公网 IP 也能安全直连。
日常建议大家配置好自动化备份,如果遇到救不回来的深层系统损毁,再考虑通过 VPS 纯净一键 DD 重装教程 快速重建干净的系统环境。
本篇专攻「SSH 连不上」这一种故障的急救流程;如果是进程杀不死、IPv6 丢包、端口堆积等更广义的系统问题,参考 Linux网络与VPS日常运维故障全景排查手册。