Linuxはアイドル状態のSSH接続をタイムアウトしません。SSH接続は無期限に開いたままにすることができ、どちらのエンドポイントも再起動されないか、新しいIPアドレスを取得している限り、長いアイドル時間後にアクセスしても接続は機能します。
ただし、ステートフルミドルボックス(NAT、ファイアウォールなど)がある場合、アイドル接続がタイムアウトする可能性があります。その結果、両端で接続が有効であっても、SSHクライアントが新しい接続を開くまでミドルボックスがパケットの転送を拒否するため、2つのエンドポイントは通信できなくなります。
あなたはミドルのタイムアウトがわかっている場合は、設定することで、問題を回避することができますClientAliveInterval
に/etc/ssh/sshd_config
、サーバー上またはServerAliveInterval
中に~/.ssh/config
、クライアント上。切断された接続を最適に検出するには、両方の設定を有効にすることをお勧めします。また、エンドポイントが再起動されたとき、または新しいIPアドレスを取得したときに、接続の切断を検出します。
タイムアウトが数秒程度のように見える場合があることを示しているので、これは問題を解決するには不十分な場合があります。見かけ上のタイムアウトが非常に低いのは、CGNの過負荷または設定ミスが原因である可能性があります。CGNが障害の原因であるかどうかを把握するには、通信パスのさまざまなポイントでトラフィックを検査する必要があります。
失敗の原因が、接続状態を共有しない複数のCGNを介した接続の負荷分散など、ISPが愚かなことをしていることが判明した場合、SSH構成を微調整するだけでは問題を解決できません。
信頼できないCGNがあり、修正を拒否しているISPに行き詰まった場合、私が知っている唯一の残りのオプションは、クライアントとサーバーの両方をMPTCPサポート付きのカーネルバージョンにアップグレードするか、自発的に耐えるように設計されたトンネルソリューションを使用することですNATのポートマッピングの変更。