SSH Keepaliveとタイムアウト設定

ServerAliveIntervalとServerAliveCountMaxでSSH接続の切断を防止。クライアント側のKeepalive設定でアイドルタイムアウトと切断を検出・処理する方法。

Best Practices

詳細な説明

SSH Keepalive設定

SSH接続は、アイドル接続をタイムアウトするファイアウォール、NATデバイス、ロードバランサーによって切断される可能性があります。クライアント側のKeepalive設定がこれを防ぎます。

設定例

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 3

Keepaliveの動作

  • ServerAliveInterval 60: データ交換がない場合、60秒ごとにKeepaliveメッセージを送信
  • ServerAliveCountMax 3: 3回連続で応答がない場合、クライアントが切断

これらの設定で、切断検出は約180秒(3 x 60)後に行われます。

シナリオ別チューニング

シナリオ Interval Max Count タイムアウト
標準デスクトップ 60 3 約3分
不安定な接続 15 5 約75秒
長時間トンネル 30 10 約5分

一般的なタイムアウト問題

  1. 企業ファイアウォール: 5-15分後にアイドル接続をタイムアウト
  2. AWS NAT Gateway: 350秒後にアイドル接続を切断
  3. クラウドロードバランサー: 60-300秒でタイムアウト

ユースケース

ファイアウォール、NATデバイス、または積極的なタイムアウトポリシーを持つクラウドネットワークインフラを通じて作業する際に、アイドルタイムアウトによるSSH接続切断を経験するすべてのユーザー。

試してみる — SSH Config Generator

フルツールを開く