## 症状现象
SSH 连接超时,提示一直卡在 Connecting 然后失败。昨天还好好的,密码没改、密钥没动、IP 没换。SSH 链路上有三层可能的阻断:平台与系统防火墙、防爆破工具的封禁、sshd 自身的配置。按层排查,先外后内,多数十分钟能定位。云平台的规则与系统内规则独立生效,检查时两边都要看。
## 第一层:防火墙
先问自己最近改过什么。控制台防火墙规则最近动过 22 端口吗,系统内 firewalld 或 iptables 最近加过规则吗。本机自测:
bash ssh -v user@服务器IP
-v 输出卡在 connect 阶段,网络层就不通,查防火墙;卡在认证阶段,网络是通的,跳到第三层。外部探测端口:nc -zv 服务器IP 22,拒绝与超时含义不同,拒绝说明端口可达但被拒,超时多半是防火墙丢弃。
## 第二层:fail2ban 封禁
装了 fail2ban 的机器,你的出口 IP 可能因为几次密码输错被拉黑。从另一个网络(手机热点)测试:热点能连、原网络不能连,基本就是 IP 被封。验证与解封:
bash fail2ban-client status sshd fail2ban-client set sshd unbanip 你的IP
所以配置 fail2ban 时 ignoreip 白名单必须带上自己的常用出口,这层保命配置的价值在此刻体现。封禁记录里也能看出规律:频繁触发说明某个认证环节一直在失败,别只解封不追问。
## 第三层:sshd 配置
防火墙与封禁都排除,查 sshd 本身:配置里 ListenAddress 是否还监听正确、AllowUsers 或 DenyUsers 是否覆盖了你的账号、sshd 进程是否在跑、22 端口是否被改过而客户端还在连旧端口。登不上去就看机器内部:顺云控制台提供的途径之外,也可以临时把配置错误视为一次演练,用控制台的救援手段进系统修配置,先只读核对再动手,避免盲目重启服务。
**预防。**永远保留两条以上进入服务器的路径:密钥 SSH、另一个端口的备用配置、控制台通道。改 sshd 配置前开一个已登录会话不退出,改完先验证新连接再断开。出口 IP 常变的团队,白名单定期更新。被锁一次的教训,胜过十篇文档。求助工单前先把最近的变更清单整理好,沟通效率翻倍。