it-swarm-ja.com

SSH接続がフリーズする

Ubuntu11.04を実行している古いP4システムがあります。マシンはUSBワイヤレスアダプターを介してインターネットに接続されており、opensshがインストールされているため、ネットワーク内の他のコンピューターから接続できます。私の問題は、ssh経由でマシンに接続してから数分後に、ssh接続がフリーズし、ターミナルで何もできないことです。サーバーがまだワイヤレスネットワークに接続されていることは知っていますが、サーバーマシンのインターネットからWebページなどを要求しない限り、どういうわけか応答しません。 ssh接続がフリーズすると、サーバーマシンを使用してwgetを使用してWebページを要求し、しばらく待ってからページをダウンロードすると、以前にフリーズしたssh接続が再び機能し始めます。

一時的な解決策として、サーバーマシンで、(wgetを介して)Webページを定期的に要求するスクリプトを実行します。これまでのところ、このソリューションは正常に機能しているように見えますが、マシンがそのように動作している理由がわかりません。何か案は?

4
blahbaa

おそらく、SSHキープアライブを(クライアント側で)1分以内に設定する必要があります。

/ etc/ssh/ssh_config ファイルを見てください

ServerAliveInterval
タイムアウト間隔を秒単位で設定します。その後、サーバーからデータを受信しなかった場合、ssh(1)は暗号化されたチャネルを介してメッセージを送信し、サーバーからの応答を要求します。
デフォルトは0で、これらのメッセージがサーバーに送信されないことを示します。BatchModeオプションが設定されている場合は300です。
このオプションは、プロトコルバージョン2にのみ適用されます。
ProtocolKeepAlivesは、このオプションのDebian固有の互換性エイリアスです。

接続をアクティブに保つ必要があるということは、これが必要であることを示しています。

理解を深めるには、 OpenSSH FAQ を参照してください。
特に、 N分間操作がないと、ssh接続がフリーズまたはドロップアウトします

これは通常、パケットフィルターまたはNATデバイスが非アクティブのためにTCP接続をタイムアウトした結果です。有効にできますサーバーの sshd_config のClientAliveInterval、またはServerAliveIntervalを有効にするクライアントの ssh_config (後者はOpenSSH 3.8以降で使用可能です)。

いずれかのオプションを有効にし、セッションのタイムアウトにかかる時間よりも短い間隔を設定すると、デバイスの接続テーブルで接続が「最新」に保たれます。

TCPKeepAlive設定にも興味があるかもしれません。
(私はあなたがそれを変更することを提案していません;あなたもそれについて読んだだけです)

2
nik