SSHタイムアウトを増やそうとしています。注文する:
> ssh <host> <command>
私は以下を使用しようとしています:
> time ssh -o ConnectionTimeout=10 <host> "sleep 20"
0.044u 0.040s 0:23.99 0.3% 0+0k 0+152io 0pf+0w
しかし、ご覧のとおり、10秒後にはタイムアウトはありません。
次のSSHバージョンを使用しています。
> ssh --version
ssh.exe: Reflection for Secure IT 7.2.1.99 on x86_64-suse-linux-gnu (64-bit).
タイムアウトをどのように設定しますか?コマンドライン(いいえその他のファイルの更新/etc/ssh/sshd_config
sudoがないので)、増加するデフォルトのタイムアウト?
上記の例は、タイムアウトが機能しているかどうかをテストすることです(ただし機能しません)。 20分ほど実行されるジョブを実行したいです~。私はデフォルトのタイムアウトが原因でタスクが終了し、次のように終了すると思います(間違っている可能性があります)。
Connection to <host> closed by remote host.
それで、SSHの時間制限を増やす必要があると思います。実行中にセッションが閉じられないように、コマンドラインを使用してsshタイムアウトを増やしたいです(sudoがなく、ファイルの更新が好きではないため)。
答え1
ConnectTimeout
何らかの方法で確立された接続に影響を与えず、リモートホストが最初の接続確立試行に応答するまでSSHが待機する時間だけを構成します。
確立されたSSH接続が2〜10秒後にタイムアウトするようにするには、使用できる愚かな方法は次のとおりですServerAliveCountMax
。0これは、sshクライアントがサーバーが生きているかどうか気にせずにクライアントの接続保持パケットに応答しますが、最初のパケットが期限切れになったServerAliveInterval
後にすべてを短縮することを意味します。
$ time ssh -o ServerAliveInterval=2 -o ServerAliveCountMax=0 localhost sleep 2000
Timeout, server localhost not responding.
real 0m2.248s
user 0m0.049s
sys 0m0.018s
これは、リモートサーバーで実行されているコマンドを終了せずに接続のみを終了します。
代わりに、任意の間隔の後に接続を切断したくありませんが、サーバー管理者がサーバー側で同じトリックを使用する場合(たとえば、20 * 60 =秒ClientAliveCountMax
に設定)、0
ClientAliveInterval
1200
sshd_config
あなたができることは何もありません。。接続またはリモートプロセスを使用中に設定したり、接続の維持を構成したりすることは役に立ちません。
リモートシステムでバックグラウンドコマンドを実行できる場合、考えられる解決策は、ポート> = 1024で独自のSSHサーバーを実行するか、screenやtmuxなどのターミナルマルチプレクサを実行し、接続が切断されたら再接続して再接続することです。すぐに。