SSHセッションが停止した場合、何ができますか?


109

ターミナルで私のsshセッションがハングすることがあります。sshセッションを終了して再接続するにはどうすればよいですか?

回答:


196

~.行の先頭にタイプ(つまり、チルダ、ピリオド)。つまり、プレスEnter、そして~、それから.。(言語によっては、文字を押すShiftAlt入力する必要がある場合があります~。)

一般的に、この~文字は、行の先頭に入力するSSHセッションのエスケープ文字です。入力しEnter、その後~?エスケープコマンドのリストを表示します。最も一般的なものは

  • ~. 接続を終了する
  • ~^Z(プレス~その後、Ctrl+ Z)の接続を中断し、ローカルでコマンドを入力する(コマンドを実行してfgSSHセッションに戻ります)

行の先頭にチルダが必要な場合は、~2回押します。


7

sshセッションを終了するために必要なことはexit、プロンプトで入力するだけです。

Shift+ `+を入力してください.


2
ユーザー入力を受け付けなくなり、文字通り停止します。Ubuntuには、このような場合に使用できるセッションを終了するキーボードの組み合わせがあります。しばらくするとセッションは終了しますがbroken-pipe、私は待つことはしません。
キットサンデ

1
@Kit答えを修正しました。ごめんなさい あなたが完全に失速したSSHセッションを意味していることに気づきませんでした。
-daviesgeek

私は通常、タイムアウトするのを待ちます。これらのコマンドについて知っているという事実にもかかわらず、シェルを取り戻すプロセスを促進するためにそれらを使用できることを常に忘れています。注あなたが前に一度戻る/ Enterキーを押しする必要があり、同様に答える@Gilles ~. あなたは、より学ぶことができSSHのmanページ、および入力して(の途中超えるビット):~?アクティブ/接続されているSSHセッションに、再び、あなたが持っていることEnterキーを1回押す前に。
ジェイソンサラズ

7

セッションがハングし、プロンプトが応答しなくなった場合は、ターミナルインスタンスを強制終了することができます。そのインスタンスに関連付けられているすべての子プロセスは、sshセッションが1つであるため、一緒に停止されます。

新しいターミナルインスタンスを開くことはできますが、徹底的にやりたい場合は、プロセスリストでsshセッションを探し、コマンドラインから強制終了します。

> ps -ef  |grep ssh
501  1332   142   0 20Dec11 ??         0:01.33 /usr/bin/ssh-agent -l
501 57172 57150   0  1:58pm ttys000    0:00.01 grep ssh
501 57139 57133   0  1:57pm ttys002    0:00.03 ssh -i/Users/ian/code/ec2-keys/id_rsa-gsg-keypair someuser@someinstance.amazonaws.com

> kill 57139

それがうまくいかない場合は試してください:

> kill -9 57139

ssh-agentプロセスを強制終了しないでください。

または、アクティビティモニターを開いてそこでセッションを検索し、それらの強制終了ボタンを押すことができます。

SSHセッションのアクティビティモニターフィルタリング


+1、これは私がやることです。多くの場合、セッションを実行したままにして、接続が誤って切断されるか、ラップトップをスリープさせると、sshがフリーズします。新しいコンソールタブを開き、sshプロセスのPIDを
強制

キーボードショートカットを使用すると、退屈なプロセスを殺すことなくMacで動作しますか?
ラファエルブガジュスキー

1
を使用し~.ます。上記を参照。
スノークラッシュ

0

〜。動作しますが、完全にスタックしているように見えますが、ssh接続を停止し、再び起動できますが、キーボードではAlt +〜を押してからスペースを押してからを押す必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.