ウェブサイト検索

Linux で SSH 接続のタイムアウトを増やす方法


非アクティブな状態の結果として SSH タイムアウトが発生すると、非常にイライラすることがあります。通常、これにより、接続を再開始し、最初からやり直す必要があります。

ありがたいことに、SSH タイムアウト制限を簡単に増やすことができ、非アクティブな状態が続いた後でも SSH セッションを維持できます。これは、サーバーまたはクライアントがセッションを維持するために他のシステムにヌル パケットを送信した場合に発生します。

関連記事: OpenSSH サーバーを保護して強化する方法

次に、Linux で SSH 接続のタイムアウトを増やす方法を見てみましょう。

SSH接続タイムアウトを増やす

サーバー上で、/etc/ssh/sshd_config 構成ファイルに移動します。

sudo vi /etc/ssh/sshd_config

スクロールして次のパラメータを見つけます。


#ClientAliveInterval 
#ClientAliveCountMax

ClientAliveInterval パラメータは、サーバーが接続を維持するためにクライアント システムに null パケットを送信するまで待機する時間を秒単位で指定します。

一方、ClientAliveCountMax パラメータは、クライアントからメッセージを取得せずに送信されるクライアント アライブ メッセージの数を定義します。メッセージの送信中にこの制限に達すると、sshd デーモンがセッションをドロップし、実質的に ssh セッションを終了します。

タイムアウト値は、上記のパラメータの積によって与えられます。

Timeout value = ClientAliveInterval * ClientAliveCountMax

たとえば、次のようにパラメータを定義したとします。


ClientAliveInterval  1200
ClientAliveCountMax 3

タイムアウトの値は1200秒 * 3=3600 秒になります。これは1 時間に相当し、ssh セッションがアイドル時間の1 時間の間、切断されることなく存続することを意味します。

あるいは、ClientAliveInterval パラメータのみを指定しても、同じ結果を得ることができます。


ClientAliveInterval  3600

完了したら、OpenSSH デーモンをリロードして変更を有効にします。

sudo systemctl reload sshd
結論

SSH セキュリティ対策として、SSH タイムアウト値を大きな値に設定しないことをお勧めします。これは、長時間不在のときに誰かが通りかかってセッションを乗っ取るのを防ぐためです。このトピックはここまでです。