首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ClientAliveInterval和ClientAliveCountMax的SSH超时

使用ClientAliveInterval和ClientAliveCountMax的SSH超时
EN

Server Fault用户
提问于 2021-10-15 17:49:21
回答 2查看 7.4K关注 0票数 3

我想要完成的只是简单地终止不活动的SSH会话。仅仅因为用户登录并不意味着用户正在做某事。我需要SSH守护进程在X秒的不活动之后注销用户。

和CentOS不自动注销不活动的SSH会话。至少不能在合理的时间内。合理地说,我指的是不到10分钟。

在发布这个问题之前,我已经搜索和阅读过serverfault.com类似的问题,但是我找不到任何有正确答案的帖子。

在阅读了一系列文章(包括Debian的手册页)之后,https://manpages.debian.org/stretch/openssh-server/sshd_config.5.en.html在/etc/ ssh /sshd_config文件中实现了与ssh不活动相关的两个选项,如下所示:

代码语言:javascript
复制
ClientAliveInterval 300
ClientAliveCountMax 1

超时值是通过将ClientAliveInterval与ClientAliveCountMax相乘来计算的。

代码语言:javascript
复制
timeout interval = ClientAliveInterval * ClientAliveCountMax

这个设置在CentOS上工作得很好,因为我得到了“由远程主机关闭到x.x的连接”。但它不适用于Debian。

我是不是曲解了文件?有人能解释我做错了什么吗?

谢谢。

EN

回答 2

Server Fault用户

发布于 2021-10-15 18:22:25

不确定Debian超时不工作的原因,但是还有其他方法强制注销。

因此,首先想到的是添加到profiles.d (或sudoers)配置中,以自动注销用户(将超时扩展到控制台和sudo su命令)。

启用步骤:https://ostechnix.com/auto-logout-inactive-users-period-time-linux/

票数 1
EN

Server Fault用户

发布于 2023-01-18 16:19:01

根据我在UbuntuServer22.04中测试的其他答案,在这里添加一些澄清性的评论。使用sshd ClientAliveInterval和ClientAliveCountMax机制,至少在我尝试使用不同的Ubuntu系统时,ssh客户机会静默地响应空客户机活动消息。所以,如果你让那个客户保持活跃,它就永远不会被杀死。但是,您可以在工作中看到它,如果您挂起客户机:~^Z,也就是随Control倾斜,并等待您乘以的ClientAliveInterval * ClientAliveCountMax秒数,连接将被关闭,当您从挂起恢复客户机时(例如,fg),您可以观察到。如果您不知道ssh中的tilde命令,请键入~?去寻求帮助。

因此,我认为ClientAlive机制有利于捕获挂起、停止或暂停的、无响应的机器、中断的网络和其他重大悲剧的ssh客户端。

我已经测试了TMOUT (export readonly TMOUT=7200),并发现它在bash中如预期的那样工作。但是,如果用户选择了不同的shell,我不确定它是否生效。也许每个shell都有自己的机制,或者它们都使用相同的机制(但很少这么容易完成!)注意,ShellCheck抱怨“导出只读”,并希望“声明-rx",但我认为/etc/profile.d中的脚本不是在bash中运行的,而是在/bin/sh中运行的,在那里”声明“不可用。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1080684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档