私は30分ユーザー入力がないとそのマシンによって切断されるマシンへのSSH接続を持っています。しかし、私がtop
のようなものを始めても、接続は生きたままです。これはクライアントのマシンなので、そのマシンのSSHサーバを再設定することはできません。だから私は自動的にアイドル状態を検出してtop
のような何かを始める方法を探しています。 Bash用の「スクリーンセーバー」のようなもの。
私はscreen
でそれができることを知っていますが、残念ながらscreen
はインストールされていません、そして私はソフトウェアをインストールすることができません。だから私はBashが提供するものを使う必要があります。
わかりやすくするために、ログイン後に一度起動して、その端末を使用して、2時間後に戻って戻ってきて、何も入力せずに作業を続けたいというソリューションを探しています。また、私はトンネルのものを探していません(そのために私は素晴らしいツール sshuttle をお勧めします)
何か案は?
わかりやすくするために、ログイン後に一度起動して、その端末を使用して、2時間後に戻って戻ってきて、何も入力せずに作業を続けたいというソリューションを探しています。
問題は、アイドルセッションをドロップしているもの(通常はファイアウォールまたはロードバランサ)があることです。セッションキープアライブを設定した場合、キープアライブにより、ネットワークデバイスはセッションをアイドル状態と見なしません。
Linux/Unix/Cygwin OpenSSH修正プログラム:
最も簡単な修正はsshクライアントのキープアライブを有効にすることです。この例では60秒ごとにsshキープアライブを送信します。
ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>
すべてのセッションでこれを有効にしたい場合は、これを/etc/ssh/ssh_config
または~/.ssh/config
に入れます。
ServerAliveInterval 60
詳細は、 ssh_config
のマンページ を参照してください。
PuTTY修正:
これをあなたのPuTTYの "デフォルト設定"に保存してください...
Mike Pennigtonの答え に加えて、私はあなたにServerAliveCountMax
も知らせたいと思います。
ServerAliveInterval
は、x秒ごとにキープアライブを送信します(デフォルトは 0 です。他に設定されていない場合、この機能は無効になります)。ServerAliveCountMax
回だけ行われます。 ServerAliveCountMax
のデフォルト値は 3 です( マンページssh_config を参照)。例:ServerAliveInterval
を 60 に設定し、ServerAliveCountMax
をそのままにしておくと、キープアライブは接続を3 * 60 = 180 seconds =
3 分だけ存続させます。
これを、例えば接続を2時間有効にしておくと、次のことが可能になります。
コマンドごと:
したがって設定することを検討する必要があります
ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>
持続的:
永続的にするには、/etc/ssh/ssh_config
(システム全体に適用されます)または~/.ssh/config
(ユーザーのみに適用されます)に書き込みます。
ServerAliveInterval 60
ServerAliveCountMax 120
また見なさい: