#はじめに
前に別のハードウエアで使用していたものと同じホスト名、もしくはIPアドレスを持つ異なるホストにSSHで接続しようとすると、警告(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)が表示され、接続に失敗します。
RaspberryPi OSは、初期設定でホスト名としてraspberrypiが設定されているため、同じPCを使用して2台以上のRaspberryPiの初期設定をしようとすると、2台目以降にホスト名でRaspberryPiにSSH接続する際、警告(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)が表示され、接続に失敗します。
本稿では、SSHで接続しようとした際に警告(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)が表示された場合の対処法について記載します。
#使用機材
- PC
- MacBook Pro 16
- 2.3 GHz 8コアIntel Core i9
- 16 GB 2667 MHz DDR4
- macOS Big Sur ver.11.1
- RaspberryPi本体
- RaspberryPi 4 Model B
- 8GB RAM
- カメラモジュール
- RaspberryPi Camera Module V2
- AC充電器(RaspberryPi電源用)
- ELECOM
- MPA-ACUQ01WF
- 入力 AC 100-240V 50/60Hz 0.6A
- 出力 DC 3.6-6V 3A, 6-9V 2A, 9-12V 1.5A
- microSDカード(OSインストール済み)
- SanDisk
- microSDXC UHS-I カード
- 32GB
#対処方法
PCは過去にSSH接続したホストの名前もしくはIPアドレスと、その公開鍵の組み合わせをknown-hostsというファイルに記録しています。SSH接続をする際に、ホストから送られる公開鍵をknown-hosts内の情報と照合し、一致しない場合には、なりすましなどによる偽のホストへの接続を回避するために、警告を表示してSSH接続を停止します。
この状態を解消するためには、PCが記憶している対象のホスト名と公開鍵の組み合わせの情報を削除します。
削除には、ssh-keygenコマンドを使用します。ターミナルから、ssh-keygen -R 【ホスト名またはIPアドレス】
を入力します。ここで、【ホスト名またはIPアドレス】の部分は、SSHで接続しようとしたホスト名、またはIPアドレスであり、RaspberryPiの初期設定の際は、raspberrypi.localになります。
known-hostsからraspberrypi.localの情報を削除した後、再度SSH接続をすると、今度は警告は表示されず、ログインが可能になります。
known-hostsは、ホームディレクトリの下の/ssh/の下にあります。
ssh-keygen実施前後のknown-hostsを比較すると、raspberrypi.localの情報が消去されていることがわかります。
####ssh-keygen実施前のknown-hosts
ホスト名 raspberrypi.loaclのエントリーが存在する。
####ssh-keygen実施後のknown-hosts
ホスト名 raspberrypi.loaclのエントリーは存在しない。
#参考
今回の作業の実施にあたり、下記を参考にいたしました。