GNU/Linux >> Linux の 問題 >  >> Linux

切断された ssh セッションに再接続する方法

解決策 1:

サーバー側の sshd.conf で ClientAliveInterval (例:60) と TCPKeepAlive (yes または no) を適切な値に設定してみてください。

これにより、接続が数分間失われた場合でも、セッションが維持されます。

解決策 2:

更新:実際の回答については、以下の zero_r の回答を参照してください

これは答えではなく、回避策です。スクリーンを使用します。

初めてログインするときは、screen を実行します。別のシェルを取得し、その中でコマンドを実行します。接続が切断されている場合、スクリーン プロセスは端末を存続させ、シェルとそれが実行しているプロセスが失敗しないようにします。再接続したら、「screen -r」を実行して再開します。

screen の構成と使用については他にもたくさんありますが、上記の方法で問題を回避できます。

解決策 3:

前述のように、GNU Screen が最適です。複数の「スクリーンウィンドウ」を介して複数のコマンドを実行できるリモートボックスで「スクリーンセッション」を行うことができます。これは、親の SSH 接続が切断された場合に単純に切り離され、その中で実行されているすべてのサブプロセスを維持します。

'man screen ' はいつものようにあなたの友人であり、OS パッケージは 'screen' という名前にする必要があります。 ' デフォルトでインストールされていない場合。

基本は次のとおりです。

  • screen セッションを開始します (リモート ホストで):

    $ screen
    
  • screen セッションから切断:CTRL-Ad

  • 再度ログインした後、screen セッションに再接続します。

    $ screen -d -r
    
  • 別の画面「ウィンドウ」を開く:CTRL-Ac

  • 開いている画面ウィンドウを切り替えます:CTRL-Aスペース

たくさんあります Screen でできる便利な機能を紹介します。 10年以上使っていますが、まだ新しい機能を見つけています。私のお気に入りの Unix ユーティリティです。

解決策 4:

誰もMOSHについて言及していないなんて信じられない;

Mosh は、SSH ログイン プロセスにフックできる別のプロトコルであり、切断、IP の変更、高遅延などの数日後もセッションを維持します。ホームページの方が説明しきれないので、下の説明をコピーしました。私の経験とアドバイスは、私が Android モバイルで使用しているということです。旅行中や SSH 接続するときの命の恩人です。たとえば、電車の中でモバイルにテザリングされている場合、ラップトップでも同じことが言えます。ソースからコンパイルして最新バージョンを取得することをお勧めします。Ubuntu 内のレポ バージョンには、最新バージョン (執筆時点) で修正されているいくつかの問題があります。

<ブロック引用>

Mosh (モバイル シェル)

ローミングを許可し、断続的な接続をサポートし、ユーザーのキーストロークのインテリジェントなローカル エコーとライン編集を提供するリモート ターミナル アプリケーション。

Mosh は SSH の代替です。特に Wi-Fi、セルラー、および長距離リンクで、より堅牢で応答性が高くなります。

Mosh はフリー ソフトウェアで、GNU/Linux、FreeBSD、Solaris、MacOS X、および Android で利用できます。

ウェブサイトの機能:

  • IP を変更します。つながり続ける :インターネット接続間を移動すると、Mosh は自動的にローミングします。電車では Wi-Fi、ホテルではイーサネット、ビーチでは LTE を使用します。ログインしたままになります。ほとんどのネットワーク プログラムは、ローミング後に接続を失います。これには、SSH や Gmail などの Web アプリケーションが含まれます。モッシュは違います。

  • 甘い夢を叶える :Mosh を使用すると、ラップトップをスリープ状態にして後で起動し、接続を維持できます。インターネット接続が切断された場合、Mosh が警告しますが、ネットワーク サービスが回復すると接続が再開されます。

  • ネットワーク ラグをなくす :SSH は、自分の入力を表示する前にサーバーの応答を待ちます。これは、お粗末なユーザー インターフェイスになる可能性があります。 Mosh は違います。入力、削除、および行編集に即座に応答します。これは適応的に行われ、emacs や vim などのフルスクリーン プログラムでも機能します。接続が悪い場合、誤解を招かないように、未解決の予測に下線が引かれます。

  • 特権コードはありません。デーモンなし :Mosh をインストールまたは実行するためにスーパーユーザーである必要はありません。クライアントとサーバーは、通常のユーザーによって実行される実行可能ファイルであり、接続が存続している間だけ存続します。

  • 同じログイン方法 :Mosh は、ネットワーク ポートをリッスンしたり、ユーザーを認証したりしません。 mosh クライアントは SSH 経由でサーバーにログインし、ユーザーは以前と同じ資格情報 (パスワード、公開鍵など) を提示します。次に、Mosh は mosh-server をリモートで実行し、UDP 経由で接続します。

  • 端末内で実行されますが、より優れています :Mosh は ssh のようなコマンドライン プログラムです。 xterm、gnome-terminal、urxvt、Terminal.app、iTerm、emacs、screen、または tmux 内で使用できます。しかし、mosh はゼロから設計されており、UTF-8 という 1 つの文字セットしかサポートしていません。他の端末や SSH の Unicode バグを修正します。

  • Control-C がうまく機能します :SSH とは異なり、mosh の UDP ベースのプロトコルはパケット損失を適切に処理し、ネットワークの状態に基づいてフレームレートを設定します。 Mosh はネットワーク バッファをいっぱいにしないので、Control-C
    暴走プロセスを停止するために常に機能します。

解決策 5:

autossh は接続を監視し、ダウンした場合は再接続します。キープアライブよりも信頼性が高くなります。 screen セッションに接続すると、切断したところから続行されます (rscreen を参照)。 autossh に付属しています)


Linux
  1. Linuxで応答しないSSH接続を終了する方法は?

  2. Ssh –セッション終了後にSshセッションの実行中に開始するプロセスを作成するにはどうすればよいですか?

  3. ssh ログイン時に画面を自動的に開始する

  1. Linux –論理的に切断されたUSBデバイスを再接続する方法は?

  2. 接続を失った後にSshセッションを回復/強制終了する方法は?

  3. リモート SSH セッションからローカル クリップボードにデータを送信する方法

  1. 画面に名前を付けるには?

  2. Linuxでスクリーンプロセスを停止するには?

  3. Screen を別の SSH セッションから強制的に切り離すにはどうすればよいですか?