サーバーでリモートで作業していると、ネットワークの問題が原因でSSH接続が切断されることがあります。サーバーに再接続しても、ドロップされたセッションは開いたままになります。 w
を実行するとそれらを見ることができます。
PIDを使用してそれらを強制終了できることは承知していますが、可能であれば、ドロップされたセッションを自動強制終了したいと思います。
どうすればそれを達成できますか?
サーバーのsshd構成でTCPKeepAlive
またはClientAliveInterval
を有効にするなどして、SSHキープアライブメッセージの1つを有効にします。
同様に、クライアント構成では、TCPKeepAlive
とServerAliveInterval
を使用できます。
古いバージョンのOpenSSHを使用している場合、TCPKeepAlive
は以前はKeepAlive
でした。
TCPキープアライブは、TCPの一部であり、SSHによって構築された暗号化されたトンネルの外部で動作する機能です。そのため、たとえば、誰かがそれらを偽装して、接続が開いていないのにまだ開いているふりをすることができます。
ClientAlive/ServerAliveは暗号化されたトンネル内で動作するため、なりすましはできません(ただし、これは新しいオプションであり、もちろんCPU時間も長くなります)。
TCPタイムアウトに達するか、KeepAliveメッセージが古い接続から応答を受け取らなくなるとすぐに、それらは閉じられるはずです。心配する必要はありません。
そうでない場合は、openssh
にバグがあり、アップストリームで報告されるはずです。