我在客户端机器上有许多进程,它们ssh
连接到服务器机器并执行操作。有时这些客户端进程会因某种原因意外结束。这总是会sshd
在服务器端留下一个进程在运行。我希望那个进程死掉。
请注意,这与断开闲置的进程。空闲进程是指没有用户数据在流动。例如,运行 ssh 的未使用的终端窗口处于空闲状态,但并未断开连接。这不是我想要终止的情况——我想要的只是闲置的连接才能维持活力。
A断开连接该过程是客户端不再打开套接字的过程。
理论上,服务器端可以通过ssh
/sshd
联合使用边带中的心跳来检测这一点。如果任何一方无法听到另一方的心跳,它可能会自杀。但我找不到这样做的选项。(有很多选项听起来像这样做,但实际上不是。)
显然,也可以定期sshd
在服务器端“收获”孤立的 s。我也想避免这种情况。对于任何收获期,我都可能有许多孤立连接(例如,在并行处理情况下)。此外,我必须采取一些措施来防止自己杀死正在使用的sshd
实例,如果我有办法检测到的话。
我怎样才能sshd
检测到断开连接的客户端并自行终止?
答案1
的手册页sshd_config
将告诉您设置ClientAliveCountMax
&ClientAliveInterval
应按您希望的方式进行。
ClientAliveCountMax
默认为3,也就是说你只需要设置ClientAliveInterval
一个合适的大小。