2026年9月29日
2026年9月29日
SSHのTimeoutを設定する方法(ClientAliveInterval)
はじめに
SSH(Secure Shell)を使用して遠隔地のLinuxサーバーに接続する際、セッションが長時間放置された場合にタイムアウトを設定することで、不要なセッションを自動的に終了し、システムリソースを効率的に管理できます。この記事ではClientAliveIntervalオプションを使用してSSHのタイムアウト時間を設定する方法を解説します。
症状・背景
SSH接続が長時間放置されたままにされると、サーバー側のリソースが無駄に消費される可能性があります。特に大量のユーザーが接続している場合や、セッションが頻繁に利用されない場合などは注意が必要です。
- ファイアウォールやルータがSSH接続を保存するため、長時間放置されたセッションが存在すると、これらのデバイスのリソースが無駄になる。
- セキュリティ上の観点からも、不正なアクセスを防ぐために適切なタイムアウト設定は重要です。
手順・設定方法
ステップ1: SSHクライアントの設定
# クラウドマシンやローカルマシンで以下のファイルを開きます。
sudo nano /etc/ssh/sshd_config
# ClientAliveIntervalオプションを追加または編集します。以下は5分(300秒)ごとに接続状態を確認する設定です。
ClientAliveInterval 300
ステップ2: SSHサーバーの設定
# サービスの再起動が必要となります。
sudo systemctl restart sshd
ステップ3: デバッグや追跡用のログ設定
# 接続状態を確認するために、SSH接続時のログ出力を有効にします。
LogLevel INFO
ステップ4: 実践/トラブルシュート/監視
# サーバー側のログファイルを確認して、設定が正しく適用されていることを確認します。
tail -f /var/log/auth.log
注意事項
- 5分(300秒)ごとに接続状態を確認することで、セッションが長時間放置された場合に自動的に切断されます。ただし、短すぎると逆にサーバーのリソースが無駄になるので注意が必要です。
- 安全性と効率性のバランスを見ながら適切なタイムアウト時間を設定することが重要です。
- セキュリティ上の観点からも、ログ出力は有用ですが過剰なログ出力はシステムパフォーマンスに影響を与える可能性があるため注意が必要です。
まとめ
1. ClientAliveInterval: SSH接続の有効性を定期的に確認し、無効なセッションを自動的に切断します。
2. サービス再起動: 新しい設定が正しく適用されていることを確認するためにssh服务需要重启。
3. ログ出力: 接続状態や問題を追跡するためにログファイルの監視を有効にします。
4. バランス: セキュリティとパフォーマンスの間で最適なタイムアウト時間を設定することが重要です。
関連記事: