SSH 连不上是最让人慌的,尤其只有一台机器的时候。按这个顺序排查,基本能定位。
1. 先 ping 通不通
ping 你的服务器IP
- 不通:网络问题、服务器关机、防火墙 ICMP 被禁(有些云厂商默认禁 ping,不能只靠这个判断)
- 通:继续下一步
2. 端口通不通
telnet 服务器IP 22
# 或
nc -zv 服务器IP 22
- Connection refused:SSH 服务没起来,或端口改了
- Timeout:防火墙/安全组挡了
- Connected:端口通,问题在认证
3. 检查安全组和防火墙
- 云控制台安全组是否放行 22 端口,源 IP 是否限制
- 服务器上
iptables -L -n或firewall-cmd --list-all - fail2ban 是否把 IP 封了:
fail2ban-client status sshd
4. 认证失败
ssh -v user@host
加 -v 看详细过程,能看出是密钥没被接受还是密码错。
- 密钥权限:
chmod 600 ~/.ssh/id_rsa,chmod 700 ~/.ssh - 服务器
~/.ssh/authorized_keys权限 600 - sshd_config 里
PubkeyAuthentication yes、PasswordAuthentication是否被关
5. 其他
- 服务器磁盘满导致 sshd 无法写入
- sshd 进程挂了但端口还占着
- 改了 sshd_config 没重启,或配置写错导致起不来
- 云厂商的 VNC 控制台可以救急
建议:改 SSH 配置前先开一个已连接的会话别关,改完新开一个窗口测试,确认能连再关旧的。这样配置写错还能救回来。

Comments 3 条评论
ping 通了不代表端口通,说得好
fail2ban 把自己封了我也干过
改配置前别断当前会话,血泪教训