質問: sshd_configの `serveraliveinterval`および` clientaliveinterval`のオプションは正確に何をしますか? 私は この質問 を見つけましたが、受け入れられた応答で言及されている2つの変数serveraliveintervalとclientaliveintervalの設定がよくわかりません。ローカルサーバーがタイムアウトした場合、この値をゼロに設定する必要がありますか?その後、タイムアウトすることはありませんか?代わりに300秒か何かに設定する必要がありますか?私の質問は、ラップトップをサスペンドしてからサスペンド解除すると、接続の一部がタイムアウトしてwrite failed: broken pipeとそうでないものもあります。壊れたパイプで失敗しないようにローカルsshdを正しく構成するにはどうすればよいですか?
回答: serveraliveinterval :(接続を維持するために)clientがサーバーにnullパケットを送信するまで待機する秒数。 clientaliveinterval :(接続を維持するために)serverがクライアントにnullパケットを送信するまで待機する秒数。値を0(デフォルト)に設定すると、これらの機能が無効になるため、アイドル状態が長すぎると接続が切断される可能性があります。serveraliveintervalは、接続を維持するための最も一般的な戦略のようです。壊れたパイプの問題を防ぐために、.ssh/configファイルで使用するssh構成を次に示します。host myhostshortcut hostname myhost.com user barthelemy serveraliveinterval 60 serveralivecountmax 10 上記の設定は次のように機能します。 クライアントは60秒間(serveraliveinterval時間)アイドル状態で待機し、 "no-op null packet"をサーバーに送信して応答を待ちます。応答がない場合、10(serveralivecountmax)回(600秒)まで上記のプロセスを試行し続けます。それでもサーバーが応答しない場合、クライアントはssh接続を切断します。 サーバー側のclientalivecountmaxも役立つ場合があります。これは、クライアントが切断される前に応答しない状態を維持できる時間の制限です。 3つのclientaliveintervalと同様に、デフォルト値は3です。