当我远程使用服务器时,有时我的 SSH 连接会由于网络问题而断开。当我重新连接到服务器时,断开的会话仍保持打开状态。当我跑步时我可以看到它们w
。
我知道我可以使用它们的 PID 杀死它们,但如果可能的话,我想自动杀死丢弃的会话。
我怎样才能做到这一点?
答案1
启用 SSH keepalive 消息之一,例如通过在服务器的 sshd 配置中启用TCPKeepAlive
或。ClientAliveInterval
同样,在客户端配置中您可以使用TCPKeepAlive
和ServerAliveInterval
。
TCPKeepAlive
KeepAlive
如果您有旧版本的 OpenSSH,那么过去就是这样。
TCP keepalive 是 TCP 的一项功能,在 SSH 构建的加密隧道之外运行。例如,有人可以欺骗他们,假装连接仍然打开,但实际上连接并未打开。
ClientAlive/ServerAlive在加密隧道内运行,因此无法被欺骗(但我相信这是一个新选项,当然会花费更多的CPU时间)。
答案2
一旦达到 TCP 超时或 KeepAlive 消息没有从旧连接收到任何应答,它们应该立即关闭。没有什么可担心的。
如果不这样做,则说明存在一些错误openssh
,应该向上游报告。