Linux SSHタイムアウト[終了]


10

非アクティブな状態がX分間続いた後、いくつかのシステムがタイムアウトになるのに苦労しており、それを修正する方法がわかりません。

私のオフィスにはCentOSボックスがあります。SSHに接続すると、2時間タッチできず、何かを実行してもまだ生きています。

ただし、自宅の同じボックスに接続すると、数秒後にタイムアウトになることもあり、数分後にタイムアウトすることもあります。

それは私のインターネット接続だと思いますが、私が積極的にボックスを使用している場合、接続は維持されます。

しかし、Googleへの入力をやめると、切断されたメッセージが表示され、再接続する必要があります。

何が起こっているかを確認するために確認できることはありますか?


4
(名前のない)クライアントのドキュメント。
user9517

回答:


14

最初に調べる必要があるのは、ServerAliveIntervalの設定です。これはワークステーションで設定する必要があります。

LinuxまたはOSXクライアントでは、ワークステーションの〜/ .ssh / configの下にユーザーの構成ファイルを作成できます。次のディレクティブを追加します。私の場合、すべてのホストに影響を与えたいので、Host *の下に配置します。

Host *
    ServerAliveInterval 60

これにより、接続を開いたままにするために60秒ごとにnoop命令が送信されます。必要に応じて値を微調整したい場合があります。

サーバー側で、TCPKeepAliveがyesに設定されていることを確認してください。

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

Windowsを使用している場合は、クライアントのドキュメントを参照する必要があります。


11

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のポートマッピングの変更。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.