[Ubuntu] サーバーを再起動する度に、そのサーバにssh で接続しようとするとホストの公開鍵が変わったエラーメッセージが表示される

ALL
スポンサーリンク

サーバーを再起動するたびに、そのサーバーへ ssh で接続しようとすると次のようなメッセージが出る場合です。
ssh接続元で保存していた接続先ホストの公開鍵と、サーバーの公開鍵が異なると出るエラーです。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

スポンサーリンク

本記事の対象か確認

/var/log/syslog で、サーバー再起動時に次のような行があるかを確認します。
(XXXXは数字です)

cloud-init[XXXX]: Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub

ホストの公開鍵(/etc/ssh/下)をサーバー起動時に cloud-init が変えていることを示すログです。
このような行があれば、本記事で対処できます。

対処方法

cloud-init が再起動の度に、ホストの公開鍵(/etc/ssh/下)を更新するのが原因です。
cloud-init は、サーバーインストール後の初回起動時に、初期設定を行うためのモジュールのようです。

次回以降の起動では不要と判断し、cloud-init を無効にします。

/etc/cloud/cloud-init.disabled を作成します。
空ファイルでかまいません。

touch /etc/cloud/cloud-init.disabled

これで、次回から cloud-init が動作しないので、サーバー再起動のたびにホストの公開鍵が再作成されないようになります。
結果、クライアントからのssh接続で、接続先ホストの公開鍵が変わったために出るエラーメッセージも出なくなります。

参考

Raspberry Pi に Ubuntu を入れて SSH でログインするまでの A to B | Aqua Ware つぶやきブログ
OpenSSHのホスト鍵の確認方法(ssh-keygenが使えなくても何とか確認する) – Qiita

コメント