专栏总目录
一、服务端
(一)打开配置文件
vi /etc/ssh/sshd_config
(二)更改选项
将相关选项配置如下
ClientAliveInterval 60
ClientAliveCountMax 0
TCPKeepAlive yes
修改完毕后,依次点击esc按键、w、q按键回车后推出。若无法正常推出可以在wq后增加 " ! " 强制推出。
设置参数的说明:
ClientAliveInterval
:这个选项设置了一个时间间隔(以秒为单位),SSH服务器将在这个时间间隔内发送一个消息到客户端,以检查客户端是否仍然在线。默认情况下,这个选项是关闭的,即ClientAliveInterval 0
。设置一个较大的值(例如60秒)可以确保客户端在失去连接之前仍然活跃。这对于保持长时间运行的SSH会话非常有用,尤其是在网络不稳定或者有防火墙在一段时间内没有数据传输就自动断开连接的情况下。
ClientAliveCountMax
:这个选项设置了SSH服务器在认为客户端已经断开并关闭连接之前,可以发送多少个无响应的ClientAlive
消息。如果设置为0,则服务器将不会根据客户端是否响应ClientAlive
消息来断开连接。这意味着只要客户端保持连接开着,SSH会话就会一直保持,而不会因为客户端没有响应ClientAlive
消息而被服务器断开。
TCPKeepAlive
:这个选项与ClientAliveInterval
和ClientAliveCountMax
不同,它使用TCP层面的保活消息来检查连接是否仍然有效。TCP保活是一种机制,用于检测一个空闲的TCP连接是否仍然有效。如果设置为yes
,则SSH将使用TCP保活消息来探测客户端是否仍然可达。这有助于在网络层面上保持连接的活跃性,防止网络设备因长时间无数据传输而断开连接。
这三个选项结合起来可以帮助保持SSH连接的稳定性,防止因网络问题或客户端无响应而导致的意外断开。不过,设置这些参数时也需要考虑到安全性,因为长时间的连接可能会增加被未授权访问的风险。
(三)重启服务
sudo systemctl restart sshd
二、客户端
linux登陆ssh时候,可以增加下列参数
-o ServerAliveInterval=60 -o ServerAliveCountMax=300
其中:
ServerAliveInterval表示每隔多少秒发送一次保持活动消息到服务端,这里设置为60秒;
ServerAliveCountMax表示发送多少次保持活动消息后断开连接,这里设置为300次。
这样设置后,客户端会定期向服务端发送保持活动消息,从而保持连接不会断开。
例如:
ssh username@ipaddress -p 22 -o ServerAliveInterval=60 -o ServerAliveCountMax=300