1.
概述:SSH 无法连接的常见范畴
- 问题可归为安全策略、访问控制、物理链路与路由三个大类。
- 安全策略包含 iptables、firewalld、Fail2Ban、cloud provider ACL。
- 路由问题包括本地 ISP、海外链路、BGP 路由表不一致。
- 中间网络设备可能因 MTU、TCP MSS 或 ICMP 被屏蔽导致连接中断。
- DDoS 与 CDN 策略也会影响 SSH 到特定机房的可达性。
2.
安全层面排查步骤与配置示例
- 查看 sshd 配置:示例配置片段:PermitRootLogin no, Port 22, PasswordAuthentication no。
- iptables 基本允许规则示例:iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT。
- cloud ACL 样例:SG-ALLOW-SSH: source 203.0.113.0/24 -> tcp:22。
- Fail2Ban 日志检查:/var/log/fail2ban.log 查看是否封禁了客户端 IP。
- 实际数据:服务器 203.0.113.10: CPU 2 vCPU, 内存 4GB, 磁盘 50GB,sshd 版本 OpenSSH_8.9p1。
3.
路由与链路问题诊断(Traceroute/BGP)
- 运行 traceroute 到目标 IP 并记录跳数与丢包:traceroute 203.0.113.10。
- 示例 traceroute 表格见下方,显示第5跳开始丢包且延迟跳变。
- 检查本地路由表与 BGP:本地 AS 64512,目的 AS 45102(新加坡机房运营商)。
- 常见问题:路由泄露、黑洞路由、互联交换点拥塞。
- 若 BGP 下一跳被黑洞,需联系上游 ISP 或机房运营商排查。
| 跳数 | IP | 延迟(ms) | 丢包(%) |
| 1 | 192.0.2.1 | 1 | 0 |
| 3 | 198.51.100.5 | 18 | 0 |
| 5 | 203.0.113.254 | 120 | 30 |
| 7 | 203.0.113.10 | 200 | 70 |
4.
MTU、MSS 与中间设备导致的连接失败
- 大多数公网上链路 MTU 为1500,但隧道/加密时会减小导致分片。
- 当 ICMP 被过滤时,Path MTU Discovery 失效,导致 TCP 连接停滞。
- 解决办法:在客户机端调整 ssh 客户端 MSS 或服务器 iptables 加 TCPMSS 规则。
- iptables 示例:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。
- 测试命令:ping -s 1472 -M do 203.0.113.10 检验最大不分片包。
5.
CDN、DDoS 防御与流量清洗对 SSH 的影响
- 若机房使用云端 DDoS 清洗,可能仅放行 HTTP/HTTPS,而阻断 SSH。
- CDN/负载均衡器多用于应用层,若误配置 ACL 会影响管理端口。
- 实例:某客户在遭受 SYN Flood 时,机房临时 ACL 只允许 80/443,导致 SSH 全面不可用。
- 建议:为 SSH 配置跳板机或管理子网,并将其纳入白名单清洗策略。
- 可用端口转发示例:在堡垒机上做 2222->203.0.113.10:22 的端口转发并限制源 IP。
6.
真实案例与处置流程
- 案例:
新加坡机房 VPS(IP 203.0.113.10)突然无法 SSH,本地 traceroute 显示第5跳高丢包。
- 排查步骤:1) 检查本地路由与 ISP,2) ping 与 traceroute 记录,3) 联系机房 NOC 检查 BGP 与防火墙。
- 机房反馈:对端交换机接口存在黑洞路由,运营商已下发临时 ACL。问题窗口为 02:10-03:40 UTC。
- 解决方式:更改出口链路、更新 BGP 社区策略并临时通过备用机房做管理。
- 最终建议:建立多线冗余、启用监控报警(例如每 1 分钟 traceroute)并将管理网段加入 DDoS 白名单。
来源:从安全到路由破解 ssh 无法连接新加坡机房 的成因