linux中ssh客户端闲置自动断开由tmout环境变量控制,设为900即15分钟无操作自动退出shell;需在/etc/profile或~/.bash_profile中export tmout=900并source生效,优先级高于ssh服务端保活配置。

Linux 中设置 SSH 客户端的闲置超时自动断开,本质是让本地终端 shell 在无操作时主动退出,而不是 SSH 连接本身被服务器踢掉。这个行为由 TMOUT 环境变量控制,和 SSH 协议层的保活(如 ClientAliveInterval)无关,也不依赖远程服务器配置。
它适用于:你希望本地打开的 SSH 终端窗口,在闲置一段时间后自动登出(比如防止离开座位时会话被他人误用),属于客户端 Shell 层的安全策略。
设置所有用户的全局闲置登出时间
编辑系统级 profile 文件:
sudo nano /etc/profile
在文件末尾添加一行:
export TMOUT=900
表示 900 秒(15 分钟)无任何键盘输入,当前 shell 就自动退出。值为 0 或未设置则禁用该功能。
保存后,让新登录用户生效;对当前已登录用户,需手动加载:
source /etc/profile
仅对当前用户生效
编辑自己的 shell 初始化文件(以 Bash 为例):
nano ~/.bash_profile # 或 ~/.bashrc(如果 .bash_profile 不存在或不加载)
添加:
export TMOUT=600
然后运行:
source ~/.bash_profile
注意事项
-
TMOUT是 shell 级别变量,只要终端运行的是 Bash/Zsh 等支持它的 shell,无论是否通过 SSH 登录,都会生效。 - 它的优先级高于 SSH 的空闲保活机制:即使服务端设置了
ClientAliveInterval 300,只要TMOUT=300,300 秒后 shell 仍会先退出,连接自然中断。 - 不影响
screen、tmux等会话管理器内的子 shell,除非你在其中也显式设置了TMOUT。 - 如果你用的是 Zsh,配置文件应为
~/.zshrc或/etc/zsh/zshrc,写法相同。
验证是否生效
在终端中执行:
echo $TMOUT
若输出数字(如 900),说明已生效。
可新开一个终端连接测试:等待设定时间不敲任何键,应自动显示 timed out waiting for input: auto-logout 并退出。
不复杂但容易忽略。











