ClientAliveInterval が設定されている間、ログイン状態を維持するにはどうすればよいですか?

ClientAliveInterval が設定されている間、ログイン状態を維持するにはどうすればよいですか?

コンプライアンス上の理由から、私のDebianサーバーはすべて、以下の設定を使用して15分後にタイムアウトするように設定されています。sshd_config は、

ClientAliveInterval 900
ClientAliveCountMax 0

もちろん、アイドル時間があると接続が切断される可能性があるため、これらのサーバーでの操作は煩わしく危険になります。

既存の設定を変更せずにクライアント セッションを維持する簡単なコマンドを探しています。

答え1

あなたがフォローしている場合セキュリティ技術実装ガイドライン現時点では

ClientAliveInterval                        600
ClientAliveCountMax                        0

切断され、アイドル10 分後の ssh セッション (つまり、putty ウィンドウ)。

RHEL 7 では、rhel-server-7.9-x86_64-dvd.iso または centos からのクリーン インストールからのこれら 2 つの項目のデフォルト値はそれぞれとであり、0その3結果、ssh セッションは自動的に終了しなくなります。

詳細については以下を参照してください:https://stackoverflow.com/questions/71174746/clientaliveinterval-is-not-closing-the-idle-connection

最適な:これらは、ユーザーがアイドル状態の場合ではなく、マニュアル ページの抜粋で説明されているように、応答しない SSH クライアントの場合です。クライアント プログラムがフリーズしたり、接続が切断されたりすると、クライアントは応答しなくなります。人間のユーザーがキーボードから離れたという理由だけで、クライアントが応答しなくなることはありません。ssh クライアントは、サーバーから送信されたパケットを引き続き受信します。

それはクライアント側にありますputty.exe内、 下繋がりそして接続を制御するためのオプションがあるキープアライブの間隔(0 の場合はオフ)ClientAliveIntervalデフォルトでは 0 です。これを で設定された数値より小さい数値に設定しますsshd_config

Windows から putty.exe を使用せず、別の Linux ボックスから ssh を使用する場合、クライアントの ssh は次のように構成されます/etc/ssh/ssh_configが、キープアライブ パケットを定期的に送信するための対応する項目はそこにはありません。

注意:デフォルトのキープアライブが0のWindowsからputty.exeを使用し、ClientAliveIntervalが設定されているSSHサーバーでは、vi開いている場合でも切断され、失った.swp ファイルを介して回復するファイルvi。または、サーバー側からの出力を継続的に吐き出すプログラムを実行している場合、ssh 接続が終了してジョブが強制終了されます... クライアント側から何か (キーの押下) が発生し、カウントされてエラーが発生します。生き続けるしたがって、Windows の putty.exe では修正はかなり簡単ですが、Linux から Linux への ssh では、ssh セッションでクライアント側でキーボードのキーを押さずに切断を防ぐ方法がわかりません。

更新: Linux から Linux へは、さまざまなオプションを使用する必要があるようですssh -o。詳細については、以下を参照してください。tcp-keepalive は ssh でどのように機能しますか?

例えば: ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1

/etc/yum.confにgpgcheck=1と書いてあるのと同じような感じでyum インストール --nogpgcheck :)

答え2

設定によって構成が無効になっていると思いますクライアントアライブカウント最大0したがって、これを 1 に設定すれば問題は解決するはずです。

クライアントアライブカウント最大

sshd(8) がクライアントからメッセージを受信せずに送信できるクライアント アライブ メッセージの数を設定します。クライアント アライブ メッセージの送信中にこのしきい値に達すると、sshd はクライアントを切断し、セッションを終了します。クライアント アライブ メッセージの使用は TCPKeepAlive とはまったく異なることに注意してください。クライアント アライブ メッセージは暗号化されたチャネルを介して送信されるため、偽装できません。TCPKeepAlive によって有効になる TCP キープアライブ オプションは偽装可能です。クライアント アライブ メカニズムは、クライアントまたはサーバーが接続が非アクティブになったことを知る必要がある場合に便利です。

デフォルト値は3です。 もしClientAliveIntervalは15に設定されています、ClientAliveCountMaxがデフォルトのままの場合、応答のないSSHクライアントは約1分後に切断されます。45秒

しかし、私は @TienPhan に同意します。設定をサーバーから切り離す方がよいでしょう。それでも、それはユースケースによって異なります。すべてのユーザーを同じように処理する必要がある場合は、サーバー側の設定がオプションです。

答え3

実際、サーバー側で間隔時間を設定する必要はありません。それ以上設定しても満足できません。

「ServerAliveInterval」を使用し、以下のように ~/.ssh/config ファイルに追加することができます。

host *
        ServerAliveInterval 120

注: 120 は秒数です。必要に応じて変更できます。

すると、このファイル内のすべてのサーバーに影響します。または、個々のサーバーに対して設定することもできます。

関連情報