Linuxで応答しないSSHセッションを終了する方法
LinuxでSSH接続が応答しなくなり、キーストロークが機能しない場合の対処法はこちらです。
リモートSSHセッションで入力しているかもしれませんが、突然、何も起こりません。システムがあなたのキー入力に応答しないようです。どうしますか?
ここにその理由があります。応答しないSSHセッションを終了する方法と、なぜMoshに切り替えたいかについて説明します。
SSHセッションがフリーズする原因は何ですか?
SSHセッションがフリーズする主な理由は、ネットワーク接続が切れることです。Wi-Fi信号が途切れたり、コンピュータがスリープ状態になることがあります。これは特にノートパソコンでよく見られます。SSHでまだログインしていることを忘れてノートパソコンの蓋を閉じてしまうことがあります。
SSHはもともと、人々が日常的にノートパソコンを使用する前の時代に設計されました。SSHは有線ネットワーク上でより良く機能します。
1. エスケープシーケンスで終了する
SSHセッションがフリーズした場合は、エスケープシーケンスを使用してみてください。エスケープシーケンスは、リモートマシンの代わりにSSHクライアントに信号を送ることができます。エスケープシーケンスはエスケープキャラクターの前に置かれます。デフォルトのOpenSSHクライアントでは、チルダ(~)キャラクターです。
SSHクライアントを終了するには、チルダキーを押してからピリオド(.)キーを押すことができます。
希望する場合は、エスケープ文字を変更することもできます。コマンドラインで-eオプションを指定することで、新しいエスケープ文字を設定できます。また、ローカルマシンのホームディレクトリにある.ssh/configファイルでEscapeCharオプションを設定することで、恒久的に変更することもできます。
2. killコマンドの使用
エスケープシーケンスが機能しない場合は、SSHクライアントを終了させてみてください。セッションのプロセスID(PID)を見つけるには、psコマンドをgrepでパイプします:
ps aux | grep ssh"ps"における「aux」引数は、「システム上のすべてのプロセスを、誰のものであるかや制御端末の有無にかかわらずリストします。」を意味します。
複数のセッションがある場合、フリーズしたセッションを選択できます。なぜなら、リストにはSSHセッションがログインしているリモートマシンのユーザー名とアドレスが表示されるからです。セッションのPIDを見つけたら、killコマンドでそれを終了させることができます:
kill [PID]より良いSSH接続のために、Moshを使おう!
面倒なフリーズしたSSHセッションを避けるためのより良い方法は、Moshを使用することです。接続が切れても、Moshは接続を維持できます。再接続時にメッセージを送信します。また、マシンをスリープ状態にしても動作します。
GNU Screenやtmuxのようなターミナルマルチプレクサを使用して、接続が切れた後にSSHセッションを再開することもできますが、Moshとtmuxを一緒に使うとさらに強力です。
Debian と Ubuntu に Mosh をインストールするには:
sudo apt install moshそして、Arch Linuxでは:
sudo pacman -S moshRed Hat系ディストリビューションについて:
sudo dnf install moshこれでスタックしたSSHセッションを解消できます
応答しないSSHセッションはイライラさせることがありますが、エスケープシーケンスやkillコマンドを使ってそれらを取り除くことができます。Moshは、接続の切断やシステムのスリープを通じて接続を維持するためのさらに優れた代替手段です。



