さくらの VPS の Ubuntu 24.04 に SSH ログインしていたら勝手に切れることに気がついた
前書き
以下の記事で書きましたが、今年 2024 年 6 月に さくらの VPS (Ubuntu 24.04) を追加契約しました。
それ以来、気になっていたこととして、なぜかこの Ubuntu に SSH でログインしているとき、数分経過すると勝手に SSH セッションが切れてしまうということがありました。
これは、さくらの VPS が悪いということではなくて、なんでセッションが切られてしまうのか?面倒くさいなあと思っていたという話です。
が、しかし、いよいよ面倒くさくなったので対策をすることにしました。
対策はクライアント側で行うことにした
なぜ SSH セッションが切れてしまうのか?この原因については軽く調べてみたんですがわからなかったです。
原因追求することに強いこだわりはなかったので、対処策を見つけてその対処を行うことにしました。
原因はわからなかったんですが、なにかの設定によりタイムアウトが発生して SSH セッションが切られているようでした。そこで SSH の config ファイルに さくらの VPS に接続するための定義があるんですが、以下を追記しました。
ServerAliveInterval 60 ServerAliveCountMax 3
これの意味は以下です。
ServerAliveInterval 60 では、SSH クライアントが SSH サーバーに「生存確認」メッセージを送信する間隔 (単位:秒) を指定しています。この例では 60 秒ごとにサーバーに信号を送信して、接続がまだ生きていることを伝え、接続がアイドル状態にならないようにしています。この結果として、ネットワークのタイムアウトやアイドル接続の切断を防ぐことを意図しています。
ServerAliveCountMax 3 は、SSH クライアントが連続して SSH サーバーからの応答がない場合に、何回の「生存確認」メッセージを送信するかを指定しています。この例では、クライアントが 3 回連続で応答を受け取れなかった場合に接続を切ります。SSH サーバーが応答しなくなった場合に、クライアントが無限に接続を保とうとするのを防ぐためのものです。
config ファイルの全体は以下のような感じ。
$ pwd /home/hoge/.ssh $ ls config config $ cat config Host home1 HostName 172.17.10.24 User hoge IdentityFile ~/.ssh/home1 Host interfacepoint HostName 10.123.0.15 User hoge IdentityFile ~/.ssh/interfacepoint Host sakuravpsubuntu HostName ik3-284-56135.vs.sakura.ne.jp User hoge IdentityFile ~/.ssh/sakuravpsubuntu ServerAliveInterval 60 ServerAliveCountMax 3 $
青文字の箇所が さくらの VPS に接続するための SSH 設定で、ここに定義を追加したわけです。
以下のようにログインします。
$ ssh sakuravpsubuntu
hoge@ik3-284-56135.vs.sakura.ne.jp's password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-35-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of 2024年 8月 12日 月曜日 13:32:26 JST
System load: 0.55
Usage of /: 8.1% of 196.77GB
Memory usage: 50%
Swap usage: 49%
Processes: 139
Users logged in: 1
IPv4 address for ens3: 13x.24x.18x.63x
IPv6 address for ens3: 2401:2500:102:1b02:13x:24x:18x:63x
Expanded Security Maintenance for Applications is not enabled.
108のアップデートはすぐに適用されます。
これらの追加アップデートを確認するには次を実行してください: apt list --upgradable
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
*** System restart required ***
Pending kernel upgrade!
Running kernel version:
6.8.0-35-generic
Diagnostics:
The currently running kernel version is not the expected kernel version 6.8.0-41-generic.
SAKURA internet [Virtual Private Server SERVICE]
Last login: Sat Sep 7 11:33:40 2024 from 13x.6x.4x.6x
$
効果
ServerAliveInterval の設定を入れることでタイムアウトによる (と思われる) SSH セッションの切断がなくなったことを確認できた。