自宅で眠っていたRaspberry Pi 4を久しぶりに使おうと、micro SDカードの初期化やらSSH設定やらしていた。
Raspberry Piに自分のメインマシン(Ubuntu 22)からパスワード認証でSSH接続しようとしたら、パスワード入力待ちにならず、以下の警告(というかエラー?)が発生し、接続に失敗した。
(以下の警告文には一部伏せ字などのフェイクを入れているが、エラーの本質的なところは書き換えていない)
mochi@mochi-PC:~$ ssh mochi@192.168.11.55
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Please contact your system administrator.
Add correct host key in /home/mochi/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/mochi/.ssh/known_hosts:2
remove with:
ssh-keygen -f "/home/mochi/.ssh/known_hosts" -R "192.168.11.55"
Host key for 192.168.11.55 has changed and you have requested strict checking.
Host key verification failed.
最初はよく意味が分からなかったが、調べてみるとどうやら次の問題があるらしいことが分かった。
過去に自分がRaspberry PiにSSH接続したときに生成したホストキー(接続に必要な鍵)が既にメインマシン側にあるが、今回新たに初期化したRaspberry Piが生成したキーと整合が取れず、認証に失敗している。
私はメインマシンから接続したことのあるSSHサーバがこのRaspberry Pi 4だけだったので、メインマシンの ~/.ssh/
直下にあるファイルをとりあえずすべて削除したら、SSH接続時にパスワード入力が求められるようになった(上手くいった)が、
他のSSHサーバにも接続したことがあるマシンを使っている場合は、ファイルをすべて削除してしまうと他のSSHサーバへの接続に支障が出てしまうので、警告文に書いてあるように次のコマンドの要領で、不整合が起きているキー情報のみをknown_hostsファイルから削除する必要がある。
ssh-keygen -f "/home/mochi/.ssh/known_hosts" -R "192.168.11.55"
太字で示したが、
ホームディレクトリパスと、-Rオプションに記載するIPアドレスは、PC環境やRaspberry Piのネットワーク環境・設定により異なるので適宜適切な記載に直してコマンド実行すること。