この質問を見つけましたが、2つの変数ServerAliveInterval
の設定がよくわかりません。 およびClientAliveInterval
受け入れられた応答に記載されています。ローカルサーバーがタイムアウトしている場合、この値をゼロに設定する必要がありますか?その後、タイムアウトすることはありませんか?代わりに300秒か何かに設定する必要がありますか?
私の質問は、ラップトップを一時停止してから一時停止を解除すると、Write failed: Broken pipe
という応答で接続の一部がタイムアウトすることです。 ないものもあります。パイプが壊れて失敗しないように、ローカルsshdを正しく構成するにはどうすればよいですか?
承認された回答:
ServerAliveInterval:クライアントが サーバーにnullパケットを送信する前に待機します(接続を維持するため)。
ClientAliveInterval:サーバーが ヌルパケットをクライアントに送信する前に待機します(接続を維持するため)。
値を0(デフォルト)に設定すると、これらの機能が無効になるため、アイドル状態が長すぎると接続が切断される可能性があります。
ServerAliveIntervalは、接続を維持するための最も一般的な戦略のようです。パイプの破損の問題を防ぐために、.ssh/configファイルで使用しているsshconfigは次のとおりです。
Host myhostshortcut
HostName myhost.com
User barthelemy
ServerAliveInterval 60
ServerAliveCountMax 10
上記の設定は次のように機能します
- クライアントは60秒間アイドル状態(ServerAliveInterval時間)待機し、「no-op nullパケット」をサーバーに送信して、応答を期待します。応答がない場合は、10(ServerAliveCountMax)回(600秒)まで上記のプロセスを試行し続けます。それでもサーバーが応答しない場合、クライアントはssh接続を切断します。
サーバー側のClientAliveCountMaxも役立つ場合があります。これは、クライアントが切断される前に応答しない状態を維持できる時間の制限です。 3つのClientAliveIntervalのように、デフォルト値は3です。