ssh保活配置

问题

SSH 连接一段时间没有操作,sshd 自动断开,通常配置的是 ClientAliveIntervalClientAliveCountMax

解决

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 本身。