(クライアントから)接続が切断された後(サーバー上)、非アクティブSSHプロセスを削除します。

(クライアントから)接続が切断された後(サーバー上)、非アクティブSSHプロセスを削除します。

ポートトンネリングのためにクライアントは次のコマンドを使用しています。

autossh -M 20000 -4 -N -f -R 18822:localhost:22 <user>@<vps-ip>

時々、クライアントの接続が一時的に切断されたり電源が切れたり、オンラインになったりしても、SSHプロセスはVPSで引き続きアクティブになります。クライアントが再接続すると、新しいプロセスが表示されますが、ポート転送は機能しません(最初のプロセスがまだポートを占有していると仮定します)。

次のように変更すると、この問題を解決できるようです。

VPSの最後に追加/etc/ssh/sshd_config

ClientAliveInterval 90
ClientAliveCountMax 2

クライアントの末尾に追加します/etc/ssh/ssh_config

ServerAliveInterval 90
ServerAliveCountMax 2

~からこの回答これらの機能の私の一般的な理解だけでなく、私はこれが試みるという印象を受けました。2空のパケットを送信する回数90秒後に失敗すると、180秒後に「壊れたパイプ」によって接続が終了し、VPSのSSHプロセスが終了し、クライアントはポートを再利用できます。

ただし、クライアントがシャットダウンしてから20分が経過し、VPSにはまだSSHプロセスがポートを占有しています。 (修正する:このプロセスは約25〜30分後に消えます。)

上記の理解が間違っていますか?クライアントが応答しなくなったら、接続がまだ存在するかどうかを確認して閉じるにはどうすればよいですか?

関連情報