ssh空闲断连问题可通过五种方法解决:一、服务端配置clientaliveinterval和clientalivecountmax;二、客户端配置serveraliveinterval和serveralivecountmax;三、命令行临时加-o参数;四、图形工具如putty设置keepalive;五、禁用tmout变量。

如果您通过 SSH 连接到 Linux 服务器后,在空闲一段时间即被强制断开,这通常由 SSH 服务端或客户端的保活机制未启用或配置过严导致。以下是针对该问题的多种配置方法:
一、修改服务器端 SSH 配置(sshd_config)
此方法直接作用于 SSH 服务进程,对所有连接该服务器的客户端生效。核心是启用并调整服务器向客户端发送保活探测包的频率与容错次数。
1、使用具有 root 权限的账户登录服务器。
2、执行命令编辑 SSH 服务端配置文件:sudo vi /etc/ssh/sshd_config。
3、在文件中查找 ClientAliveInterval 和 ClientAliveCountMax 两行;若被注释(行首为 #),则删除 # 号;若不存在,则在文件末尾新增:
4、将 ClientAliveInterval 设置为 60(表示每 60 秒发送一次保活探测)。
5、将 ClientAliveCountMax 设置为 3(表示连续 3 次未收到响应后断开连接)。
6、保存文件并退出编辑器。
7、重启 SSH 服务使配置生效:sudo systemctl restart sshd 或 sudo service sshd restart。
二、修改客户端 SSH 配置(ssh_config)
此方法适用于无法修改服务器配置的场景,或仅需对特定本地用户生效。它通过客户端主动发送保活信号维持连接。
1、在本地终端执行命令创建或编辑用户级 SSH 客户端配置文件:vi ~/.ssh/config。
2、在文件中添加以下内容(若文件为空,直接写入):
3、输入 Host * 表示该配置适用于所有目标主机。
4、下一行写入 ServerAliveInterval 60,表示客户端每 60 秒向服务器发送一次保活请求。
5、再下一行写入 ServerAliveCountMax 3,表示连续 3 次未获响应后终止连接。
6、保存并退出编辑器。
7、确保 ~/.ssh/config 文件权限为 600:chmod 600 ~/.ssh/config。
三、使用 SSH 命令行参数临时设置
此方法无需修改任何配置文件,适合一次性连接或调试验证。参数优先级高于配置文件,可覆盖已有设置。
1、在终端中输入 SSH 连接命令时,加入 -o 参数指定保活行为。
2、例如,连接用户 user、地址 192.168.1.100 的命令为:ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@192.168.1.100。
3、若还需启用 TCP 层保活,可额外添加:-o TCPKeepAlive=yes。
4、执行该命令后,本次会话即按指定参数维持活跃状态。
四、配置客户端工具(如 PuTTY、MobaXterm、SecureCRT)
图形化 SSH 客户端通常提供可视化保活设置界面,无需手动编辑文本配置,适合 Windows 用户或非命令行环境。
1、PuTTY:打开会话配置 → 左侧选择 Connection → 在 Seconds between keepalives 输入框中填入 60 → 点击 Save 保存会话。
2、MobaXterm:点击 Settings → Configuration → SSH → 勾选 SSH keepalive → 设置间隔为 60 秒。
3、SecureCRT:右键会话 → Properties → Connection → Terminal → Anti-idle → 勾选 Send protocol NO-OP → 设置间隔为 60 秒。
五、禁用 Shell 级超时(TMOUT)干扰
某些系统在用户 Shell 层设置了 TMOUT 变量,该变量独立于 SSH 保活机制,可能在 SSH 连接仍活跃时强制登出用户会话。
1、检查当前是否启用 TMOUT:echo $TMOUT;若返回数字(如 300),说明已启用。
2、临时禁用:执行 unset TMOUT。
3、永久禁用(仅限可信环境):编辑用户 shell 配置文件,如 ~/.bashrc 或 ~/.bash_profile,查找并注释或删除含 TMOUT= 的行。
4、重新加载配置:source ~/.bashrc。










