客户端设置

要在系统范围内启用保持活动(需要 root 访问权限),请编辑配置文件 /etc/ssh/ssh_config 。
同样,要仅为特定用户设置设置,请编辑 ~/.ssh/config(如果文件不存在,则创建该文件)。
插入以下内容:

Host *
ServerAliveInterval 300
ServerAliveCountMax 2

这些设置将使SSH客户端或者服务器每300秒(5分钟)向对方发送一个空包,如果尝试2次后没有收到任何响应则放弃,此时连接很可能已经建立反正丢弃了。

从 ssh_config 手册页:

ServerAliveCountMax:

设置可以在没有 ssh(1) 从服务器接收任何消息的情况下发送的服务器活动消息的数量(见下文)。
如果在发送服务器活动消息时达到此阈值,ssh 将与服务器断开连接,终止会话。
需要注意的是,服务器活动消息的使用与 TCPKeepAlive(如下)有很大不同。
服务器活动消息通过加密通道发送,因此不会被欺骗。
TCPKeepAlive 启用的 TCP keepalive 选项是可欺骗的。
当客户端或者服务器依赖于知道连接何时变为非活动状态时,服务器活动机制很有价值。

默认值为 3.
例如,如果 ServerAliveInterval(见下文)设置为 15 并且 ServerAliveCountMax 保留为默认值,则如果服务器无响应,ssh 将在大约 45 秒后断开连接。
此选项仅适用于协议版本 2;在协议版本 1 中,没有从服务器请求响应服务器活动消息的机制,因此断开连接是 TCP 堆栈的责任。

服务器活动间隔:

以秒为单位设置超时间隔,如果没有从服务器接收到数据,ssh(1) 将通过加密通道发送消息以请求服务器的响应。
默认值为 0,表示这些消息不会发送到服务器,如果设置了 BatchMode 选项,则为 300。
此选项仅适用于协议版本 2.
ProtocolKeepAlives 和 SetupTimeOut 是此选项的 Debian 特定兼容性别名。

on it road .com

服务器端设置

如果我们对服务器具有管理员访问权限,则可以在 SSHd 配置文件中配置 ClientAliveInterval、TCPKeepAlive 和 ClientAliveCountMax 选项。
该文件的路径是 /etc/ssh/sshd_config

# vi /etc/ssh/sshd_config
ClientAliveInterval 30
TCPKeepAlive yes 
ClientAliveCountMax 99999

我们需要重新启动 SSH 服务器才能使更改生效。

# service sshd restart
如何阻止 SSH 会话超时

默认情况下,Linux ssh 服务器永远不会断开与服务器端的 ssh 会话,请检查交换机/路由器/防火墙配置以避免此问题,而无需更改 ssh 服务器/客户端的配置。
如果 ssh 会话由于不活动而断开连接,并且想要停止此操作,请在客户端或者服务器端执行以下步骤,如下所述:

日期:2020-09-17 00:10:51 来源:oir作者:oir