Linux怎么配置SSH自动断开空闲连接

小丽酱_3658

小丽酱_3658

2026-06-25

505人浏览

原创

必须同时配置tmout和clientaliveinterval+clientalivecountmax,缺一不可;tmout只监控键盘输入空闲,无法感知网络中断或客户端假死,而clientalive机制通过加密心跳探测连接真实性,二者分别解决“人没操作”和“网断进程挂”两类问题。

linux怎么配置ssh自动断开空闲连接

只配 TMOUT 或只改 ClientAliveInterval,空闲断连大概率失效。必须两者都配,且各自生效路径不同——一个管“人没敲键盘”,一个管“网线断了但进程还挂着”。

为什么单设 TMOUT 会漏掉大量假活跃连接

TMOUT 是 Bash 自己的计时器,只在你有输入时才倒数;一旦运行 vim、tail -f、ssh 到另一台机器,或者笔记本合盖休眠,它就完全停摆。此时 sshd 进程仍认为连接正常,不会释放资源。

  • 验证方式:登录后执行 unset TMOUT,再静默等待(比如拔网线),观察是否真被踢出——若没踢,说明 TMOUT 不起作用
  • 图形终端(GNOME Terminal、Konsole)默认不加载 /etc/profile,TMOUT 直接无效
  • 写进 ~/.bashrc 也不行:SSH 登录默认走 ~/.bash_profile,不读 .bashrc
  • 必须用 export TMOUT=1800,仅 TMOUT=1800 不导出,子 shell 和新登录都不继承

怎么配 ClientAliveInterval 和 ClientAliveCountMax 才不误杀

这两个参数在 /etc/ssh/sshd_config 里协同工作,控制服务端主动探测连接真实性的频率和容忍度。总超时 = ClientAliveInterval × ClientAliveCountMax。

Alpine Linux
Alpine Linux

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

下载
  • 别设 ClientAliveCountMax 0:这会让 sshd 在第一次心跳无响应时立刻断连,Wi-Fi 切换、短暂丢包都会触发误杀
  • 推荐组合:ClientAliveInterval 300(5 分钟发一次) + ClientAliveCountMax 3(最多丢 3 次) → 实际容忍 15 分钟无响应
  • 必须取消注释:检查配置行前面不能有 #,也不能写成 ClientAliveInterval=300(等号是错的)
  • 改完必须 sudo systemctl restart sshd:reload 有时不重载心跳参数,只 restart 才保险

如何验证配置真正在跑,不是纸上谈兵

别只跑 sshd -t 或 echo $TMOUT ——那只是语法对、变量有值,不代表机制在线。

  • Shell 层验证:新 SSH 登录后,先 unset TMOUT,然后什么都不做,等满设定时间(如 15 分钟),看是否被踢出;若没踢,说明 ClientAlive* 没生效
  • 网络层验证:另一台机器连上,执行 sudo ss -tnp | grep :22 确认 ESTABLISHED 连接存在;然后关掉客户端或拔网线,等超过 ClientAliveInterval × ClientAliveCountMax 时间,再查连接是否消失
  • 注意干扰项:systemd-logind 的 IdleAction(比如设了 IdleAction=lock)可能抢在 sshd 前干掉会话,需检查 loginctl show-user $USER | grep IdleAction

权限、路径、兼容性这些细节最容易翻车

配置看着全对,却在某些账号下失效,问题常出在这些地方:

  • ~/.ssh/config 权限必须是 600,否则 OpenSSH 直接忽略整个文件
  • CentOS 7.9 等老系统中,/etc/ssh/sshd_config 可能被云厂商镜像覆盖,改完要确认没被重置
  • 非 SSH 登录(比如本地 tty、串口 console)不受 ClientAlive* 影响,只靠 TMOUT
  • 如果用了跳板机或 ProxyCommand,客户端的 ServerAliveInterval 无法穿透到最终目标,得在跳板机上也配

真正难搞的是中间设备——防火墙、NAT 网关、企业级状态检测设备,它们根本不认 SSH 心跳包,只看 TCP 数据流。这时候光调 ClientAliveInterval 没用,得协调网络侧调大连接跟踪超时,或者加应用层保活(比如后台跑 while :; do date >/dev/null; sleep 30; done)。

相关文章

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

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

下载

相关标签:

linux

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

相关专题

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

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

2023.06.21

3830

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3313

10

linux find
linux find

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

2023.06.30

2433

5

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

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

2023.07.05

5850

7

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

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

2023.07.06

5502

7

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

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

2023.07.20

3253

8

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

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

2023.07.20

2745

4

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

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

2023.07.25

2959

6

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

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

2023.07.31

277

3

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习