物理的なネットワーク切断後も存続するSSHのようなセッション

物理的なネットワーク切断後も存続するSSHのようなセッション

コンピュータがスリープ状態から復帰した後も、SSH ログイン セッションの接続を維持したいと考えています。私の理解では、TCP は断続的なネットワークの問題に耐えることができるので、数時間または数日間耐えられるように設定を変更できますか。そうでない場合、SSH に似たものでそれができるものはありますか。

ネットワークが再び利用可能になったときに自動的に再接続するように SSH を設定できることは理解しています。しかし、これは理想的ではありません。なぜなら、ラップトップがスリープ状態になる前とまったく同じ場所でログイン セッションを実行したいからです (シェル コマンド ラインで何かを入力している途中であっても)。

他にもあることは理解している回避策しかし、そもそもシェル セッションが失われないようにする方法があることを期待していました。

答え1

TCP 接続は切断されても存続できるはずですが、一部の過剰なファイアウォールはアイドル状態の接続を切断する可能性があり、IP アドレスが変更されると存続できなくなります (そのようなことが起こった場合)。

インタラクティブセッションでは、モッシュUDP 経由の SSH のようなターミナル接続を実装し、必要に応じて別の IP アドレスからの再接続をサポートし、不安定な接続をサポートする機能もいくつか備えています。

SSHとMoshのどちらを使うかに関わらず、画面またはtmuxセッションを接続から独立させることもできます。

答え2

screenまたは、tmux間違いなく正しい方法です。ssh接続は目的を達成するための手段に過ぎなくなり、アイドル時に接続が切断される頻度は (合理的な範囲内で) 問題ではなくなります。

リモート サーバーにログインしたときに開始することを覚えておく必要がある場合は、対話型セッションを既存のセッションに自動的に参加させたり、すでに実行されているセッションがない場合は新しいセッションを開始したりすることはそれほどscreen難しくありません。screen

答え3

(Reliable sOCKetS)は、クライアントTCP接続を行うプログラムのラッパーであり、TCP接続が失敗したときにそれを検出し、クライアントが別のネットワークに移動した場合でも自動的に再接続します。これは論文で説明されています。信頼性の高いネットワーク接続そしてダウンロード可能メンテナンスされていませんが、かなり安定したインターフェースを使用しているため、現在でも動作するはずです。ライブラリのプリロード(LD_PRELOAD)を使用して標準ライブラリ関数をシャドウするため、動的にリンクされた実行ファイルでのみ動作します。次のように実行するだけです。

rocks ssh …

Rocksはクライアントの移動を扱いますが、サーバーの移動は扱いません。サーバーが移動した場合は、靴下プロキシ。

インタラクティブなセッションの場合、良い代替案はモッシュ信頼性の低い接続向けに設計されており、クライアントのモビリティをサポートします。接続が信頼できない場合、Mosh はデータを失うため、対話型セッションでのみ使用できます。

ほぼ信頼できるが、時々接続が不安定な場合は、Moshの代替としてオート自動的に再接続し、画面またはtmuxサーバー上で実行されています。クライアントが切断されても screen/tmux セッションはサーバー上に残り、接続が切断されると autossh が自動的に再接続します。

関連情報