依赖 ssh 客户端定时发送心跳,putty、SecureCRT、XShell 都有这个功能,但是目测不太好用。
Linux / Unix 下,编辑 ssh 配置文件:
vim /etc/ssh/ssh_config
# 添加
ServerAliveInterval 20
ServerAliveCountMax 999
# 上述配置则表示:每隔20秒,向服务器发出一次心跳。若超过999次请求都没有发送成功,则会主动断开与服务器端的连接。
# ServerAliveInterval表示每隔多少秒,从客户端向服务器端发送一次心跳(alive 检测)。
# ServerAliveCountMax表示服务端多少次心跳无响应之后,客户端才会认为与服务器的 SSH 连接已经断开,然后断开连接。
sudo vim /etc/ssh/sshd_config
# 添加
ClientAliveInterval 60
ClientAliveCountMax 3
# 上述配置则表示:每隔60秒,服务器向客户端发出一次心跳。若客户端超过3次请求未响应,则会从服务器端断开与客户端的连接。所以,总共允许无响应的时间是 60 * 3 = 180 秒以内。
# ClientAliveInterval表示每隔多少秒,从服务器端向客户端发送一次心跳。
# ClientAliveInterval表示客户端多少次心跳无响应之后,服务端才会认为客户端已经断开连接,然后断开连接。
ssh -o TCPKeepAlive=yes -o ServerAliveInterval=300 user@host -p