web-dev-qa-db-ja.com

クラッシュしたSSHセッションを中断するにはどうすればよいですか?

多くの場合、応答しなくなったSSHセッションがあります(たとえば、インターネット接続を失ってから再接続した場合)。 Ctrl+C、 Ctrl+D、 Ctrl+Z そして、何十億ものキーを押しても何の効果もありません。

ほとんどの場合、すでにtmuxまたはbyobuをすでに実行しているため、別の端末を起動して再接続するだけです。しかし、それは面倒に感じます。現在の端末からSSHを切断するにはどうすればよいですか?

63
phunehehe

「エスケープ文字」(通常はチルド~)を使用して、SSHセッションを制御します。

  • ~の後に.を続けると、SSH接続が閉じます。
  • ~の後に Ctrl+Z SSHプロセスを一時停止します。
  • ~の後に別の~が続くと、リテラル~が送信されます。

-eオプションを使用してエスケープ文字を ssh に設定できます。

さらに、

また、押すことを忘れないでください Enter 前 ~。エスケープ文字は、行の最初の文字であるときに機能します。そしてまたあなたは使うことができます ~ 以降 ? sshクライアントからヘルプを取得します。 ( Lukasz Stelmach によるコメントに感謝します。)

88
Riccardo Murri

Opensshは、クライアントまたはサーバーの生存メッセージを反対側に送信するように構成できます。応答がない場合、接続は終了します。サーバー側から、ClientAliveIntervalおよびClientAliveCountMax構成オプションを参照してください。クライアント側から、ServerAliveIntervalおよびServerAliveCountMaxオプションを参照してください。 TCPKeepAliveもオプションですが、以前のオプションはそうではありませんが、なりすまし可能であるため、おそらくより優れています。

これらを適切な値に設定すると、おそらく接続が再びハングすることはありません。唯一の欠点は、セキュリティ上の理由から、ssh接続を終了したい場合でも、接続が開いたままになる可能性があることです。

詳細については、 OpenSSH sshd config man page および OpenSSH ssh config man page を参照してください。

1
Faheem Mitha