Linux怎么配置系统的SSH自动退出时长

雨明吖_7676

雨明吖_7676

2026-06-10

156人浏览

原创

必须同时配置tmout和sshd_config中的clientaliveinterval与clientalivecountmax,因为tmout仅监控shell输入空闲,无法感知tcp连接中断、客户端崩溃或防火墙静默丢包等网络层异常,而clientaliveinterval×clientalivecountmax才真正实现对僵尸连接的探测与强制断连。

linux怎么配置系统的ssh自动退出时长

必须同时配置 TMOU 和 sshd_config 中的 ClientAliveInterval 与 ClientAliveCountMax,只设一个会漏掉“假活跃”连接或本地终端空闲场景。

为什么单靠 TMOU 不够用

很多用户只改 /etc/profile 里的 TMOU=1800,结果发现 SSH 连接明明 30 分钟没动,却没断开——这是因为 TMOU 只监控 shell 输入空闲,对网络层“卡住但进程还在”的情况完全无效。比如笔记本休眠后重连、客户端崩溃、中间防火墙静默丢包,sshd 进程仍认为连接正常,TMOU 根本不触发。

常见错误现象:
- SSH 登录后保持静默 30 分钟,终端没退出,ps aux | grep sshd 仍能看到对应子进程
- echo $TMOU 显示正确值,但超时就是不生效
- 用 tmux 或 screen 启动的会话完全不受 TMOU 影响(它们接管了 stdin)

  • TMOU 是 shell 层控制,仅作用于交互式 Bash/Zsh/Ksh
  • 它无法感知 TCP 连接状态,纯靠读取键盘输入判断“空闲”
  • 普通用户执行 unset TMOU 或在 ~/.bashrc 里覆盖就能绕过

怎么配 sshd_config 让 SSH 真正 30 分钟断连

这是强制清理僵尸连接的关键。不是“保活”,而是“探测+断连”:

  • 编辑 /etc/ssh/sshd_config,确保这三行启用且值匹配目标时长:
    ClientAliveInterval 600(每 10 分钟发一次心跳)
    ClientAliveCountMax 3(连续 3 次无响应就 kill 连接)
    MaxStartups 10:30:60(可选,防暴力连接耗尽资源)
  • 注意:ClientAliveInterval × ClientAliveCountMax = 总超时秒数,600×3=1800 秒(30 分钟)
  • 别和 LoginGraceTime 混:后者管“登录前等待时间”,和已建立连接的空闲无关
  • 改完必须 reload,不是 restart:sudo systemctl reload sshd(避免中断正在运行的会话)

验证是否生效:sudo sshd -T | grep -E "clientalive",输出应为小写 clientaliveinterval 600 和 clientalivecountmax 3。

Alpine Linux
Alpine Linux

获取最新发布版本;聚合最新版本架构

下载

怎么让 TMOU 生效且难绕过

如果要兼顾本地 tty 和 SSH 的 shell 层退出,且防止用户轻易关闭,推荐用 /etc/profile.d/ + 只读方式:

  • 创建脚本:sudo tee /etc/profile.d/autologout.sh 写入三行:
    TMOU=1800
    readonly TMOU
    export TMOU
  • 设执行权限:sudo chmod +x /etc/profile.d/autologout.sh
  • 验证只读:declare -p TMOU 输出中必须含 readonly 字样;尝试 unset TMOU 会报错
  • 不建议全局禁用:TMOU=0 虽可临时绕过,但运维脚本里应显式加前缀,如 TMOU=0 tail -f /var/log/syslog

注意:图形终端(GNOME Terminal)、tmux、screen 默认不继承 TMOU,需在会话内单独设置或依赖 SSH 层保活。

容易被忽略的兼容性细节

不同发行版和 OpenSSH 版本对参数支持有差异:

  • RHEL/CentOS 7 的 sshd 不支持 ClientAliveCountMax 0,设为 0 会被忽略,必须 ≥1
  • Debian/Ubuntu 的 sshd -T 输出全小写,而旧版可能保留大写,grep 时注意大小写
  • csh/tcsh 用户需用 autologout 而非 TMOU,配置文件是 /etc/csh.cshrc
  • sudo 操作期间若无输入,TMOU 仍会计时,可能中途登出;建议设为 900–1800 秒平衡安全与可用性

真正起作用的是两层机制的叠加:shell 层负责“人没动”,SSH 层负责“线断了但进程还活着”。缺一不可,且各自有绕过路径,生产环境必须双控。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3333

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2453

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5930

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5562

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3273

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2785

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2999

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习