OpenSSHのデフォルトのアイドルタイムアウトは何ですか?


25

この単純な質問への答えを見つけることができないようです。これはいくつかのコンプライアンス文書に必要です。

CentOS 6.5(OpenSSH 5.3p1-94.el6)のデフォルトインストールで、アイドル状態が続くと、ユーザーのSSHセッションは終了しますか?アイドルタイムアウトを増やすために以下を設定できると思いますが、デフォルトではコメント化されています。

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

また、現在のsshd設定のリストをダンプするコマンドはありますか?に何も表示されませんman sshd


3
一部のシェルは、タイムアウト後に終了するように設定できます。これにより、sshセッションが終了します。TMOUT環境変数が設定されているかどうかを確認してください。
ケンスター14

回答:


23

sshd_config通常、コメント行にはデフォルトが表示されます。これは、質問のすべての行に当てはまります。これはsshd_configマンページで確認できます。関連するスニペットは次のとおりです。

TCPKeepAlive

      システムがTCPキープアライブメッセージを反対側に送信するかどうかを指定します。それらが送信された場合、接続の切断またはマシンの1つのクラッシュが適切に通知されます。ただし、これは、ルートが一時的にダウンした場合に接続が切断されることを意味し、一部の人々はそれが迷惑だと感じています。一方、TCPキープアライブが送信されない場合、セッションがサーバー上で無期限にハングし、「ゴースト」ユーザーが残り、サーバーリソースが消費される可能性があります。

      デフォルトは「yes」(TCPキープアライブメッセージを送信する)で、サーバーは、ネットワークがダウンした場合やクライアントホストがクラッシュした場合に通知します。これにより、セッションが無限にハングするのを防ぎます。

      TCPキープアライブメッセージを無効にするには、値を「no」に設定する必要があります。

      このオプションは以前はと呼ばれていましたKeepAlive

ClientAliveCountMax

      sshd(8)がクライアントから返されるメッセージを受信 せずに送信される可能性のあるクライアントアライブメッセージ(以下を参照)の数を設定します。クライアントアライブメッセージの送信中にこのしきい値に達すると、sshdはクライアントを切断し、セッションを終了します。クライアントアライブメッセージの使用は、次とは非常に異なることに注意することが重要です。TCPKeepAlive (以下)(上記)。クライアントアライブメッセージは暗号化されたチャネルを介して送信されるため、なりすましはできません。によって有効にされるTCPキープアライブオプションTCPKeepAliveは、スプーフィング可能です。クライアントまたはサーバーが、接続がいつ非アクティブになったかを知ることに依存している場合、クライアントアライブメカニズムは重要です。

      デフォルト値は3です。ClientAliveInterval(下記を参照)が15に設定さClientAliveCountMaxれ、デフォルトのままになっている場合、応答しないSSHクライアントは約45秒後に切断されます。このオプションは、プロトコルバージョン2にのみ適用されます。

ClientAliveInterval

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


1
間違っている場合は修正しますが、私とマシンの間にファイアウォールがなかった場合(デフォルトの構成を使用)、切断されることはありませんか?私たちのファイアウォールは、60分後にアイドル状態のTCP接続をドロップすることを知っているので、そこでアイドル状態の接続が閉じられます。OpenSSH自体がセッションを明示的に閉じているかどうかを確認したかっただけです。答えは「いいえ」です。opensshはアイドル接続を明示的に閉じませんが、通常はファイアウォールが閉じます。回答に記載されている設定は、実際に接続を維持するのに役立ちます。また、セッションがドロップされた場合は、セッションを適切に終了します。
バンジャー14

2
引用符で囲まれたテキストは、ClientAliveIntervalのデフォルトが0であることを示しています。これは、接続が開いたままになる時間間隔を定義しないことを意味します。それでも、デフォルトでは時間間隔に有限値があることがわかっています。したがって、デフォルトで接続を開いたままにする時間を設定する他のパラメーターが必要なようです。上記の分析が正しい場合、サーバーとクライアントの両方がopensshを実行しているlinuxマシンであり、両方がすべてのデフォルトを使用していると仮定します。この場合、どちら側がデフォルトを設定し、その値は何で、どこに設定されますか?
ベン・クローウェル

2
@BenCrowell そして、デフォルトでは時間間隔に有限値があることがわかっています。どのような時間間隔で、これをどのように知っていますか?
ピョートルドブロゴスト

9

クライアントまたはサーバー側のいずれかにSSHキープアライブを設定できます。

クライアント側

ファイル: /etc/ssh/ssh_config

コンテンツ:

Host *
ServerAliveInterval XX
ServerAliveCountMax YY

サーバ側

ファイル: /etc/ssh/sshd_config

コンテンツ:

ClientAliveInterval XX
ClientAliveCountMax YY

抽出元:http : //www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


6
有用ですが、質問には一切答えません。
bzeaman

6

OpenSSHは、しばらくアイドル状態だったシェルセッションを終了しません。これはOpenSSHが行うことではありません。アイドルシェルセッションの終了は、OpenSSHの構成とは関係ありません。

表示している設定は、接続がダウンしたときのタイムアウトに関連しており、リモートホストのシェルや、ユーザーがそこで行っていることや行っていないこととは無関係です。

しばらくアイドル状態になった後、リモートホストのシェルが終了する(または他のプロセスによって強制終了される)場合がありますが、これはサーバーおよびSSHクライアントのSSHサービスの構成とは無関係です。

関連:


sshd設定をダンプするには、ルートとして「拡張テストモード」を使用します。

sshd -T

これはマニュアルに文書化されていsshd(8)ますOpenSSH_7.7, LibreSSL 2.7.2OpenBSDをご覧ください):

-T

拡張テストモード。構成ファイルの有効性を確認し、有効な構成をstdoutに出力してから終了します。オプションで、1つ以上の-Cオプションを使用して接続パラメーターを指定することにより、一致ルールを適用できます。

このオプションはsshd、2008年にOpenSSH 5.1 / 5.1p1に追加されました。


3

一定の非アクティブ期間の後にSSH接続を閉じることが要件である場合、シェル自体がタイムアウト変数を提供します。

bashの場合:

TMOUT:ゼロより大きい値に設定すると、TMOUTは読み取り組み込みのデフォルトのタイムアウトとして扱われます。入力が端末から来ているTMOUT秒後に入力が到着しない場合、selectコマンドは終了します。対話型シェルでは、この値は、プライマリプロンプトを発行してから入力を待機する秒数として解釈されます。入力が到着しない場合、その秒数だけ待機した後、bashは終了します。

これを実行してテストしTMOUT=10、10秒待って接続を閉じます。

tcshの場合:

autologoutシェル変数を設定すると、一定の非アクティブ時間が経過した後にシェルをログアウトまたはロックできます。

tcshでは、10 分間のタイムアウトを設定するための構文はset autologout=10です。これは元のcshでは機能しません。


-2

全員のタイムアウトを10秒にしたい場合は、サーバー構成(sshd_config)に対して以下を実行します。

ClientAliveInterval 10
ClientAliveCountMax 0

ローカルクライアントのタイムアウトを10秒にしたい場合は、クライアント構成(ssh_config)に対して以下を実行します。

ServerAliveInterval 10
ServerAliveCountMax 0

AliveCountMaxパラメーターがゼロ以外の場合、サーバーはタイマーをリセットして応答するため、おそらく機能しません(接続に問題がない限り)。これは、デバッグをオンにしてsshクライアントを実行することで確認できます。

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