目次
背景
IntelliJでリモートサーバーに接続して作業していると、何もしていない状態で約5分後にSSH接続が切れる問題が発生しました。
- ファイル編集中は問題なし
- 放置すると突然切断
- 再接続は可能
最初は「サーバー側の設定が原因では?」と疑いました。
環境
- OS:Windows(PowerShell)
- クライアント:IntelliJ IDEA
- 接続方法:SSH(Deployment / SFTP)
- サーバー:さくらVPS系
原因
原因は、IntelliJ側のSSH接続でkeep-aliveが未設定だったことでした。
- 通信が発生しない(アイドル状態)
- 約5分後にネットワーク機器(NAT / ファイアウォール)が接続を切断
試したこと(時系列)
① ~/.ssh/config を確認
cat ~/.ssh/config
対象接続は .ssh/config を使っていないことが判明 → ここを変更しても効果なし
② keep-alive設定を追加(無効)
ServerAliveInterval 60 ServerAliveCountMax 10
→ IntelliJの接続には反映されず
③ サーバー設定を確認
sudo sshd -T | grep clientalive
結果:
clientaliveinterval 3600 clientalivecountmax 3
サーバーは最大1時間以上切断しない設定 → 5分切断と一致しない
④ IntelliJ側の設定を確認
以下の設定にkeep-alive項目を発見:
- Settings
- Tools
- SSH Configurations
- または
- Build, Execution, Deployment → Deployment → Connection
解決手順
① keep-aliveを設定
Send keep-alive messages every = 10秒
② 動作確認
- 何も操作せず10分以上放置
- 接続が切れないことを確認
なぜそうなるか
SSH接続が切れる原因は「サーバー」だけではありません。
- IntelliJ:keep-alive未設定
- → 完全なアイドル状態
- → ネットワーク機器が「未使用」と判断
- → 約5分で切断
一方でサーバーは3600秒以上維持する設定 → 切っているのはサーバーではない
まとめ
- 原因:IntelliJのkeep-alive未設定
- 切断元:ネットワーク機器(NAT / FW)
- 対策:keep-alive設定
補足(実運用)
- 10秒でも解決するが過剰
- 30秒〜60秒がバランス良い
より詳しい判断軸や、他パターンとの違いについてはnoteでまとめています。
- なぜ5分でネットワークを疑うのか
- サーバー起因との見分け方
- 切り分けの優先順位
↓ 同じミスした人向けにまとめました。