リモート サーバーでプログラムを実行するために SSH 接続を設定しました。プログラムは 10 秒ごとにターミナルにデバッグ情報を出力します。SSH ウィンドウを長時間 (たとえば 10 時間) 開いたままにしておくと、SSH 接続は非アクティブになりますか? SSH セッションではアクティビティはどのように定義されますか? セッションを維持するには、x 秒ごとにコマンドを入力/実行する必要がありますか?
答え1
特別なことをする必要はありません。SSHは非アクティブ状態を理由に接続を終了しません。したがって、非アクティブ期間は定義されていません。内で。
ただし、ユーザーとサーバー間のネットワーク ルート上のデバイスの 1 つがルートを失う可能性があり、その場合、通常は片側からのアクティビティで十分ですが、常に十分というわけではありません (TCP を使用する場合、クライアントからサーバーに戻る「到着確認パッケージ」、確認応答があります)。
両側からのトラフィックは継続的な接続を保証するものではありません。DSL モデムを使用していて、プロバイダーが毎日新しい IP アドレスを取得することを決定した場合、接続は切断されます。
クライアントに定期的にパケットを送信させるには、次のように記述します。
ServerAliveInterval 5
または/etc/ssh/ssh_config
、~/.ssh/config
10 秒ごとにサーバーから送信されるトラフィックに加えて、5 秒ごとにクライアントからサーバーへのトラフィックが発生するようにします。
DSLモデムの接続をリセットするより簡単な「解決策」は、サーバー側のソフトウェアをtmux
またはscreen
: 接続が切断された場合は、再度サーバーに SSH 接続して、tmux attach
またはを発行するscreen -r
だけで、中断のないサーバー プログラムを表示し続けることができます。
tmux
/ の使用はscreen
、接続が失われることよりも、接続が失われた場合にサーバー プログラムが停止することの方が心配な場合に特に便利です。そのためには、元のプログラムの出力をファイルにリダイレクトして を使用することもできますtail -f
が、サーバー プログラムと簡単に対話することはできません (対話が必要な場合)。tmux
とscreen
(基本形式では) は簡単に使用できますが、グラフィカル ターミナルのスライダーを使用してスクロール バックできないなどの副作用があります (そのためには、キーボード ショートカットを使用して、サーバーをバッファー内でスクロール バックさせる必要があります)。
接続を切断するデバイスに関するより柔軟な解決策は、mosh
これは SSH を使用して秘密情報を交換し、IP アドレスの 1 つまたは両方が変更された場合でも再接続を可能にします。ただし、設定して動作させるのはより困難です。
あなたの場合、まず使用してtmux
、接続が実際に非アクティブになったときに手動で再接続します。
答え2
また、SCREEN コマンドを使用すると非常に便利です。これを使用すると、任意のコマンドを実行でき、ssh 接続を心配する必要がなくなります。