新手配置Linux SSH长连接需客户端与服务端协同:服务端在/etc/ssh/sshd_config中设TCPKeepAlive yes、ClientAliveInterval 60、ClientAliveCountMax 3并重启sshd;客户端在~/.ssh/config中设ServerAliveInterval和ServerAliveCountMax;同时排查路由器空闲超时、终端软件设置及GSSAPIAuthentication等干扰项。

新手配置 Linux SSH 长连接,核心是让连接“有呼吸感”——定期发心跳包,而不是单纯拉长超时时间。自动重连则需额外工具辅助,但必须注意:重连本身不等于安全,错误配置反而可能暴露凭证或引发会话堆积。
一、服务端配置(推荐优先做)
这是最稳妥的方式,对所有客户端生效,且由服务器统一控制。用 root 权限编辑:
sudo nano /etc/ssh/sshd_config
确保以下三行启用并合理设置:
- TCPKeepAlive yes —— 允许底层 TCP 层参与保活探测
- ClientAliveInterval 60 —— 每 60 秒主动向客户端发一次存活询问(30–120 秒较稳妥)
- ClientAliveCountMax 3 —— 连续 3 次无响应才断开(即最多容忍约 3 分钟网络抖动)
改完后重启服务:sudo systemctl restart sshd。注意:不要设 ClientAliveInterval=0 或 ClientAliveCountMax=0,这会禁用保活,反而更容易被中间设备切断。
二、客户端配置(适配个人习惯)
适合你无法修改服务器,或只想对某几台主机生效。在本地用户目录下创建或编辑:
nano ~/.ssh/config
例如只对一台云服务器生效:
- Host mycloud
- HostName 192.168.1.100
- User ubuntu
- ServerAliveInterval 45
- ServerAliveCountMax 3
若想全局生效,用通配符 Host * 即可。此方式不依赖服务器权限,且避免了改系统级配置的风险。
三、断开后自动重连?谨慎使用
SSH 协议本身不支持自动重连,强行实现需借助外部工具,但存在安全与资源隐患:
- 不推荐脚本轮询重连:比如用 while 循环反复 ssh,容易泄露密码(若未配密钥)、触发登录失败锁定、或在旧会话残留时新建多个空闲连接
- 更安全的替代方案:用 tmux 或 screen 包裹你的任务。即使 SSH 断开,后台会话仍在运行;重连后只需 tmux attach 即可恢复,无需重复操作
- 终端工具自带重连(仅限 GUI 客户端):如 MobaXterm、SecureCRT 支持“断线重连”,但务必关闭“自动发送密码”选项,改用密钥认证,防止凭证明文暴露
四、别漏掉这些干扰项
调完参数还断?可能是这些环节在“截胡”:
- 家用路由器/光猫:很多默认 5–10 分钟清理空闲 TCP 连接。若服务器在内网或走 NAT,需登录路由器关闭“TCP 连接空闲超时”或调大至 30 分钟以上
- 终端软件自身设置:PuTTY 要开 Connection → Seconds between keepalives;Windows Terminal 默认无保活,需配合 ~/.ssh/config 生效;iTerm2 需确认 Profiles → Terminal → Disable session idle detection 已关闭
- 服务器负载异常:用 journalctl -u sshd -n 30 查看是否因 OOM 或进程崩溃导致强制退出











