如何自动关闭断开的 SSH 连接?

如何自动关闭断开的 SSH 连接?

当我远程使用服务器时,有时我的 SSH 连接会由于网络问题而断开。当我重新连接到服务器时,断开的会话仍保持打开状态。当我跑步时我可以看到它们w

我知道我可以使用它们的 PID 杀死它们,但如果可能的话,我想自动杀死丢弃的会话。

我怎样才能做到这一点?

答案1

启用 SSH keepalive 消息之一,例如通过在服务器的 sshd 配置中启用TCPKeepAlive或。ClientAliveInterval

同样,在客户端配置中您可以使用TCPKeepAliveServerAliveInterval

TCPKeepAliveKeepAlive如果您有旧版本的 OpenSSH,那么过去就是这样。

TCP keepalive 是 TCP 的一项功能,在 SSH 构建的加密隧道之外运行。例如,有人可以欺骗他们,假装连接仍然打开,但实际上连接并未打开。

ClientAlive/ServerAlive在加密隧道内运行,因此无法被欺骗(但我相信这是一个新选项,当然会花费更多的CPU时间)。

答案2

一旦达到 TCP 超时或 KeepAlive 消息没有从旧连接收到任何应答,它们应该立即关闭。没有什么可担心的。

如果不这样做,则说明存在一些错误openssh,应该向上游报告。

相关内容