如果空闲时间超过5分钟,我将关闭空闲ssh连接。我尝试过在sshd_config上设置这些值
TCPKeepAlive no
ClientAliveInterval 300
ClientAliveCountMax 0但是似乎什么都没有工作,空闲状态保持活跃,即使在5分钟的空闲时间之后也不会丢失。
然后我发现了一个https://bbs.archlinux.org/viewtopic.php?id=254707,他们说
这些不是用于用户空闲的情况,它们是--如手册页摘录--用于响应迟钝的SSH客户端。如果客户端程序已冻结或连接已中断,则客户端将没有响应。客户端不应该仅仅因为人类用户已经离开键盘而没有响应: ssh客户机仍然会接收从服务器发送的数据包。
我甚至不能使用TMOUT,因为有些ssh客户端脚本不运行bash程序。
如何做到这一点?
Openssh版本OpenSSH_8.2p1 Ubuntu-4 ubuntu0.4,OpenSSL 1.1.1f 2020年3月31日
发布于 2022-02-27 08:17:05
如果空闲超过5分钟,则关闭空闲ssh连接。
这项任务令人吃惊地困难。OpenSSH本身没有在shell命令上设置空闲超时的功能,可能是因为一个很好的原因:杀死“空闲”shell本身并不简单:
考虑到这一点,通常只有很少的解决方案可以杀死空闲的shell会话,这并不奇怪。那些我可以通过(很少)研究发现的,依赖于后台守护进程来检查系统上运行的所有进程(例如,昏倒/懒惰、怠速)的空闲状态。
一种可能的解决方案是检查这些解决方案中的任何一种是否可以通过来在特定的shell会话上强制执行空闲超时。
另一种选择是调整OpenSSH源代码以支持您的特定需求。原则上,OpenSSH应该能够轻松地访问控制台I/O活动和会话持续时间,因此评估“空闲”属性可能比较容易。至于“杀死”shell和所有涉及到的子程序,在PID命名空间系统中运行(并杀死)远程shell是一种有效的选择。
这两个选项都比较复杂--因此,在进一步研究它们之前,我将进一步检查是否有在shell会话上强制执行空闲超时的现有解决方案。在OpenSSH下使用它们非常简单。
https://stackoverflow.com/questions/71174746
复制相似问题