web-dev-qa-db-ja.com

ドロップされたSSH接続を自動閉じるにはどうすればよいですか?

サーバーでリモートで作業していると、ネットワークの問題が原因でSSH接続が切断されることがあります。サーバーに再接続しても、ドロップされたセッションは開いたままになります。 wを実行するとそれらを見ることができます。

PIDを使用してそれらを強制終了できることは承知していますが、可能であれば、ドロップされたセッションを自動強制終了したいと思います。

どうすればそれを達成できますか?

3
eden881

サーバーのsshd構成でTCPKeepAliveまたはClientAliveIntervalを有効にするなどして、SSHキープアライブメッセージの1つを有効にします。

同様に、クライアント構成では、TCPKeepAliveServerAliveIntervalを使用できます。

古いバージョンのOpenSSHを使用している場合、TCPKeepAliveは以前はKeepAliveでした。

TCPキープアライブは、TCPの一部であり、SSHによって構築された暗号化されたトンネルの外部で動作する機能です。そのため、たとえば、誰かがそれらを偽装して、接続が開いていないのにまだ開いているふりをすることができます。

ClientAlive/ServerAliveは暗号化されたトンネル内で動作するため、なりすましはできません(ただし、これは新しいオプションであり、もちろんCPU時間も長くなります)。

5
derobert

TCPタイムアウトに達するか、KeepAliveメッセージが古い接続から応答を受け取らなくなるとすぐに、それらは閉じられるはずです。心配する必要はありません。

そうでない場合は、opensshにバグがあり、アップストリームで報告されるはずです。

0
Jakuje