バージョンアップ後にSSH接続できない
VPS の Ubuntu をバージョンアップしました。
すると、SSH 接続できなくなりました。
バージョンアップ
Ubuntu 20.04 から 22.04 にバージョンアップしました。
すると、SSH 接続できなくなりました。
SSH 接続はできないのですが、ブラウザ上で VPS のコンソールから操作ができるので調査はできます。
20.04 から 22.04 のバージョンアップではRSAタイプの鍵認証で問題となることがあるようですが、今回はそれではなかったです。
(鍵認証のところばかり調べていたのですが・・・)
ip アドレス
ping が通らない。
サーバーで ip a
を見ると eth0 に ip アドレスが設定されていませんでした。
VPS ではコントロールパネルで IP アドレスが確認できるので、設定されている気になってしまいます。
でも実際は設定されていませんでした。
ip アドレスを設定したら直りそう。
netplan
Ubuntu 22.04 ではネットワークの設定は netplan を利用しています。
/etc/netplan
に yaml 設定ファイルがいくつかありました。
$ ls
00-installer-config.yaml 10-gmovps.yaml 50-cloud-init.yaml
ファイルの中のコメントを見ると「00-installer-config.yaml」は subiquity により自動作成されたもの、「50-cloud-init.yaml」は cloud-init により自動作成されたものです。
「10-gmovps.yaml」はファイル名から VPS サービス側で作成されたものでしょうか?
設定ファイルがいくつかある場合、読み込みの規則があります。
ファイル名の数字アルファベット順に読み込まれます。
ファイル名の先頭が2桁の数字になっていて優先度を表しています。
数字が大きい方があとから読み込まれて設定が上書きされます。
ファイルを順番に見ていくと DHCP が有効になっている設定でした。
network:
ethernets:
eth0:
addresses: []
dhcp4: true # dhcp4: no に変更する。
dhcp6: false
accept-ra: false
optional: true
version: 2
固定 IP アドレスなので dhcp4: no
に変更します。
IP アドレス自体は次に読み込まれるファイルで設定されています。
あと、これよりも前に読み込まれるファイルは拡張子を yaml からリネームして読み込まれないようにしました。
このファイルはインターフェース名 ens3 の設定ですがこの設定があるとうまくいかなかったので。1
設定変更したら以下のコマンドで適用が必要です。
$ sudo netplan apply
ip a
で確認すると ip アドレスが表示されました。
SSH での接続もできるようになりました。よかった~。
教訓
- まずは、
ping
とip a
を確認する。
-
3つ設定ファイルがありました。
インターフェース名を ens3 で設定しているものと eth0 で設定しているものがあったり、DHCPの設定があるものと固定 IP アドレスの設定があるものがあったり、3者の息が合っていないような気がします。
OS バージョンアップのほかに、イメージの再構築も行ったりしているのですがどのタイミングで設定がおかしくなってしまったのか・・・? ↩