Linux ssh サーバーは、デフォルトではサーバー側から ssh セッションを切断しません。スイッチ/ルーター/ファイアウォールの構成を確認して、ssh サーバー/クライアントの構成を変更せずに問題を回避してください。非アクティブのために ssh セッションが切断され、これを停止したい場合は、以下に説明するように、クライアント側またはサーバー側のいずれかで以下の手順に従ってください:
クライアント側の設定
システム全体でキープアライブを有効にするには (root アクセスが必要)、構成ファイル /etc/ssh/ssh_config を編集します。 .同様に、特定のユーザーだけの設定を行うには、~/.ssh/config を編集します。 (ファイルが存在しない場合は作成します)。以下を挿入してください:
Host * ServerAliveInterval 300 ServerAliveCountMax 2
これらの設定により、SSH クライアントまたはサーバーは 300 秒 (5 分) ごとに相手側にヌル パケットを送信し、2 回試行しても応答がない場合はあきらめます。とにかく破棄します。
ssh_config man ページから:
ServerAliveCountMax:
ssh(1) がサーバーからメッセージを受信せずに送信できるサーバーのアライブ メッセージ (以下を参照) の数を設定します。サーバー アライブ メッセージの送信中にこのしきい値に達すると、ssh はサーバーから切断され、セッションが終了します。サーバー アライブ メッセージの使用は、TCPKeepAlive (下記) とは大きく異なることに注意することが重要です。サーバー アライブ メッセージは暗号化されたチャネルを介して送信されるため、なりすましはできません。 TCPKeepAlive によって有効化された TCP キープアライブ オプションは、スプーフィング可能です。サーバー アライブ メカニズムは、クライアントまたはサーバーが、接続がいつ非アクティブになったかを知ることに依存している場合に役立ちます。
デフォルト値は 3 です。たとえば、ServerAliveInterval (以下を参照) が 15 に設定され、ServerAliveCountMax がデフォルトのままの場合、サーバーが応答しなくなると、ssh は約 45 秒後に切断されます。このオプションは、プロトコル バージョン 2 のみに適用されます。プロトコル バージョン 1 では、サーバーからサーバー アライブ メッセージへの応答を要求するメカニズムがないため、切断は TCP スタックの責任です。
ServerAliveInterval:
サーバーからデータを受信しなかった場合、ssh(1) は暗号化されたチャネルを介してメッセージを送信し、サーバーからの応答を要求するまでのタイムアウト間隔を秒単位で設定します。デフォルトは 0 で、これらのメッセージがサーバーに送信されないことを示します。BatchMode オプションが設定されている場合は 300 です。このオプションは、プロトコル バージョン 2 にのみ適用されます。 ProtocolKeepAlive と SetupTimeOut は、このオプションの Debian 固有の互換性エイリアスです。
サーバー側の設定
サーバーへの管理者アクセス権がある場合は、SSHd 構成ファイルで ClientAliveInterval、TCPKeepAlive、および ClientAliveCountMax オプションを構成できます。ファイルのパスは /etc/ssh/sshd_config です
# vi /etc/ssh/sshd_config ClientAliveInterval 30 TCPKeepAlive yes ClientAliveCountMax 99999
変更を有効にするには、SSH サーバーを再起動する必要があります。
# service sshd restart