SSH接続によるServerAliveIntervalの動作

SSH接続によるServerAliveIntervalの動作

私はsshを使用して別のシステムにログインし、そこからスクリプトを実行して新しいシステムを作成し、いくつかの設定を行いました。約7~8時間ほどかかります。そのため、SSH 接続が切断され、スクリプトの実行に失敗したため、常にタイムアウトが発生します。

これで、SSH接続にこのパラメータを使用します。

ssh -o ServerAliveInterval=60 user@host ....

この SSH は複数回生成されます。問題は、数回のSSH接続後にエラーが発生することです。

too many logins of userそして、SSH接続はログイン成功後すぐに終了します。

これも同じ行動ですか?サーバー活動間隔、リモートシステムのsshユーザーログインセッションは、ssh操作が終了した後もアクティブのままです。それで、追加のログインが失われるのはなぜですか?

ベストアンサー1

クライアントの接続が失われてもセッションは維持されないと思います。おそらく、サーバー側のオプションは次のとおりです。

生きているクライアントの最大数

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

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

クライアントアクティビティ間隔

クライアントからデータが受信されない場合、sshd(8)は暗号化されたチャネルを介してメッセージを送信してクライアントから応答を要求するタイムアウト間隔(秒単位)を設定します。デフォルト値は 0 です。これは、これらのメッセージがクライアントに送信されないことを意味します。

sshd_config)

おそらく問題に対する実際の解決策は、端末マルチプレクサ(screenやtmuxなど)を使用することです。接続が失われても、ログインして実行中のプログラムを維持し続けます。実行中のプログラムの出力を含む、後でいつでも端末に再接続できます。また、これを使用して単一のSSH接続内に複数の端末を持つこともできます。サーバーがSSHセッションを制限しているようなので、これは役に立ちます。あなたは一つを見つけることができます画面紹介はこちらしかし、他のものもたくさんあります。

おすすめ記事