SSHタイムアウト設定とは?無操作切断の仕組みと安全な設定方法を解説

SSHタイムアウト設定とは?

SSHタイムアウト設定の仕組みと適切な運用方法を理解しよう

Linuxサーバを運用していると、SSH接続したまま席を離れたり、ターミナルを閉じ忘れたりすることがあります。

このような状態が長時間続くと、第三者による不正操作やセキュリティ事故につながる可能性があります。

そこで重要になるのがSSHのタイムアウト設定です。

一定時間操作が行われなかったセッションを自動的に切断することで、不要な接続を残さず安全な運用が可能になります。

企業環境やクラウド環境ではセキュリティポリシーの一環として設定されることも多く、Linux管理者にとって重要な知識です。

本記事ではSSHタイムアウトの仕組みや設定方法、実務で推奨される設定値について詳しく解説します。

SSHタイムアウトとは

SSHタイムアウトとは、一定時間操作が行われないSSHセッションを自動的に切断する機能です。

利用者がログインしたまま放置していても、自動的に切断されるためセキュリティ向上につながります。

例えば以下のようなケースがあります。

  • ログインしたまま離席した
  • ターミナルを閉じ忘れた
  • VPN接続が不安定になった
  • 放置されたセッションが残っている

このような状況を防ぐために利用されます。

なぜタイムアウト設定が必要なのか

SSHセッションを放置すると様々なリスクがあります。

  • 第三者による操作
  • 不正アクセスの踏み台化
  • 管理者の操作ミス
  • 不要なセッション増加

特に共有オフィスやサーバルームでは重要な対策です。

タイムアウトの種類

SSHには複数のタイムアウト関連設定があります。

  • ServerAliveInterval
  • ClientAliveInterval
  • ClientAliveCountMax
  • TMOUT

それぞれ用途が異なります。

ClientAliveIntervalとは

SSHサーバ側がクライアントへ生存確認を行う設定です。

設定例です。

ClientAliveInterval 300

300秒ごとにクライアントへ応答確認を行います。

5分ごとの確認という意味になります。

ClientAliveCountMaxとは

応答がない場合に何回まで確認するかを指定します。

ClientAliveCountMax 0

0の場合は応答がない時点で切断されます。

一般的には次のような設定が利用されます。

ClientAliveCountMax 3

タイムアウト時間の計算

以下の設定を例にします。

ClientAliveInterval 300
ClientAliveCountMax 3

この場合は

300秒 × 3回 = 約15分

無応答状態が15分続くと切断されます。

設定ファイルの場所

SSHサーバ設定ファイルです。

/etc/ssh/sshd_config

このファイルへ設定を追加します。

実際の設定例

企業環境でよく利用される例です。

ClientAliveInterval 600
ClientAliveCountMax 3

約30分の無操作で切断されます。

設定反映方法

設定変更後は構文チェックを行います。

$ sshd -t

問題なければ再起動します。

$ systemctl restart sshd

状態確認も行います。
$ systemctl status sshd

TMOUTとは

シェル側で利用できるタイムアウト機能です。

Bash環境では以下を設定できます。

TMOUT=900
export TMOUT

900秒で自動ログアウトします。

シェルレベルで動作する点が特徴です。

TMOUTの設定場所

全ユーザーへ適用する場合は以下を利用します。

/etc/profile

ユーザー単位の場合は以下です。
~/.bash_profile

環境に応じて使い分けます。

ClientAliveIntervalとTMOUTの違い

項目ClientAliveIntervalTMOUT
設定場所sshd_configシェル設定
管理対象SSH接続ログインシェル
適用範囲SSH全体Bash利用者

用途に応じて選択します。

ServerAliveIntervalとは

クライアント側の設定です。

サーバへ定期的に応答確認を送信します。

ServerAliveInterval 60

SSHトンネル利用時などでよく使われます。

VPN環境での活用

VPN利用時は通信が切断されやすい場合があります。

その場合はKeepAlive系設定が有効です。

接続維持に役立ちます。

クラウド環境での活用

AWSやAzureでもタイムアウト設定は重要です。

管理者アカウントの長時間放置を防止できます。

監査要件で求められることもあります。

実務で推奨される設定例

一般的な例です。

ClientAliveInterval 300
ClientAliveCountMax 3

または

ClientAliveInterval 600
ClientAliveCountMax 3

企業によって異なります。

設定が厳しすぎる場合

タイムアウト時間を短くしすぎると問題もあります。

  • 作業中に切断される
  • 長時間ログ確認が難しい
  • 運用負荷が増える

業務内容に応じて調整が必要です。

セキュリティ監査で確認される項目

企業監査では以下が確認される場合があります。

  • 無操作セッションの自動切断
  • 管理者アカウント管理
  • アクセスログ管理
  • 認証設定

タイムアウト設定は監査項目になることがあります。

よくあるトラブル

突然切断される

ClientAliveIntervalやTMOUTが設定されている可能性があります。

設定値を確認しましょう。

設定が反映されない

sshd再起動忘れがよくあります。

また構文エラーも確認してください。

まとめ

SSHタイムアウト設定は、放置されたSSHセッションを自動的に切断し、セキュリティを向上させる重要な機能です。

主にClientAliveInterval、ClientAliveCountMax、TMOUTなどを利用して設定します。

企業環境では監査要件やセキュリティポリシーに基づいて設定されることも多く、Linux管理者にとって必須の知識といえるでしょう。

安全なSSH運用のために、自社環境に適したタイムアウト設定を導入してみてください。