服务器经常掉线重连
发布时间:2026-01-14 21:29       
更新时间:2026-01-14 23:23
SSH 会话隔几分钟就断、重连又一切正常,这类问题先分清是网络真的断了,还是会话超时被踢,两者的处理方向完全不同。判断归属有个简单办法:换一台电脑连同一台服务器也掉,问题多半在服务器或链路;只有你的机器掉,重点看本地。
网络抖动的判断
本地到服务器之间的链路丢包,表现为操作卡顿后断开。测试:
ping 203.0.113.10 -c 20
看丢包率,超过百分之一就该关注;再用 mtr 走一遍路由,看两处:中间某跳持续丢包但终点正常,是节点不响应探测,不用管;终点丢包才说明链路真有问题。本地 Wi-Fi 信号差、办公网出口拥塞、运营商线路高峰都可能抖,换个网络对比就能缩小范围。云控制台的 ping 监控也能看丢包趋势,把本地问题和服务商问题分开。ping 通但 SSH 建连慢的,检查 sshd 的 DNS 反解配置,关闭 UseDNS 能明显加快握手。
会话超时被踢的判断
长时间没有输入就断、一操作就正常,这是 sshd 的空闲超时机制。改配置前先备份:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,然后设置:
ClientAliveInterval 60
ClientAliveCountMax 3
用 sshd -t 检查语法,再 systemctl restart sshd 生效,之后每三分钟发一次心跳,基本不会再被踢。客户端也可以在 ~/.ssh/config 里加 ServerAliveInterval 60 双保险。改完开着第二个连接验证,防止配置错误把自己关在门外。多人共用的机器,配置统一改在服务端,别要求每个人改自己的客户端。
长任务交给 tmux
部署、数据迁移这类长任务,跑之前就放进 tmux,会话断了重连后 tmux attach 接着跑,进度不丢。常用就三条:tmux 新建,Ctrl+B D 脱离,tmux attach 恢复;滚屏用 Ctrl+B [ 进入,q 退出,看长输出不用来回翻。
别忽略服务器本身
dmesg | tail 查有没有 OOM(内存耗尽触发杀进程),top 看负载是否长期顶格,内存长期吃紧就加 swap 或升配,OOM 引发的掉线会反复出现。掉线时间点集中的,对照定时任务表,某些备份脚本一跑就把磁盘拖慢,卡死的表象就是掉线。心跳只解决空闲被踢,解决不了资源不足。