服务器 SSH 失联?从代理、隧道到服务三步排查
服务器突然 SSH 连不上了,先别急着重启,更不要一上来就改一堆配置。SSH 失联往往不是一个原因造成的,而是链路上的某一段断了:可能是本地代理或网络出口变了,可能是跳板机、隧道这一段断了,也可能是服务器上的 sshd 本身出了问题。按“代理、隧道、服务”这个顺序从外向内排查,每一步先定位、再动手,能少走很多弯路。
第一步:先查代理和本地网络。很多失联并不是服务器挂了,而是你这边到服务器的路变了。先确认自己有没有走代VPN 或者公司出口,代理规则一改,22 端口可能就被绕到别处去了。可以先关掉代理直连一次试试,再用 ping 和 telnet / nc 测一下 22 端口通不通。如果 22 端口根本不通,先看云厂商的安全组、防火墙有没有放行你的出口 IP,IP 变了是最常见的“昨天还能连、今天突然不行”的原因。另外也要确认自己连的是不是正确的 IP 和端口:换过弹性 IP、改过 sshd 端口、或者用了非标准端口,客户端还按旧配置连,自然会超时。
第二步:再查跳板机和隧道。如果平时是经过跳板机、堡垒机 SSH 隧道、端口转发连内网服务器,问题很可能出在中间这一段。先确认跳板机本身能不能登录,再看隧道是不是还活着:本地转发端口有没有被别的进程占用,autossh 之类的保活进程有没有退出,隧道配置里的目标地址和端口有没有变。排查时把链路拆开测:能直连内网就先直连验证,不能直连就一层一层往前推,看到底是哪一段开始不通。还要注意,隧道断了不一定会立刻报错,客户端常常表现为一直等待、超时,这时看一下本地监听端口和转发进程状态,比反复重试登录更有效。
第三步:最后查服务器 sshd 服务。前面两步都通了、但登录仍然失败,才轮到服务器本身。能通过云厂商的控制台终端、VNC 或者带外管理登录时,先看 sshd 是不是在运行,再看监听地址和端口有没有被改错,配置文件改完有没有重载生效。登录失败还要分清楚是“连不上”还是“认证不过”:密码、密钥、密钥权限、authorized_keys 属主不对,都会导致认证失败,但这和网络不通是两回事。查看认证日志能快速区分,常见的如 /var/log/auth.log 或 /var/log/secure,按登录时间找对应的失败记录。改配置前先备份原文件,改完用 sshd -t 检查语法再重载,避免一次改错把自己彻底锁在外面。
一个实用的排查清单是:先 IP、端口、安全组和本地代理;再确认跳板机、隧道和转发端口;最后确认 sshd 状态、监听配置和认证日志。每确认一步就排除一段链路,不要同时改多个地方,否则修好了也不知道是哪一步起的作用,也容易把原本正常的配置改坏。如果实在无法通过 SSH 登录,优先用云厂商提供的控制台终端或救援模式处理,不要在没有带外通道的情况下反复重启生产服务器。
总结一SSH 失联先分段,代理看出口和端口放行,隧道看中间链路是否还活着,服务看 sshd 状态、监听和认证。按这个顺序走,大多数“突然连不上”都能在不折腾服务器的前提下定位到真正断掉的那一段。下:确认上的或者理、
- 点赞
- 收藏
- 关注作者
评论(0)