ssh保活配置
问题
SSH 连接一段时间没有操作,sshd 自动断开,通常配置的是 ClientAliveInterval 和 ClientAliveCountMax。
解决
1. 服务端配置
sudo vi /etc/ssh/sshd_config
...
ClientAliveInterval 300 # 每300秒向客户端发送一次探测
ClientAliveCountMax 0 # 客户端没有响应时,立即断开
注意:这不是“用户不操作就断开”。 SSH 连接即使没有输入,只要客户端正常响应探测,也不会断开。
ClientAliveInterval 60 # 每60秒检查一次客户端是否响应
ClientAliveCountMax 60 # 连续30次无响应后断开
2. 空闲超过30分钟就断开
sshd 原生没有一个简单的“用户无操作超时”配置。可以用 TMOUT 控制 Shell 空闲超时:
echo 'TMOUT=1800' | sudo tee /etc/profile.d/ssh-timeout.sh
echo 'readonly TMOUT' | sudo tee -a /etc/profile.d/ssh-timeout.sh
echo 'export TMOUT' | sudo tee -a /etc/profile.d/ssh-timeout.sh
这会让 Bash 在 30 分钟没有输入 后退出。它控制的是 Shell,不是 sshd 本身。