SSHで「REMOTE HOST IDENTIFICATION HAS CHANGED!」が出たとき|ラズパイを焼き直したあとの直し方と、本当に大丈夫かの確かめ方

raspberry pi

Raspberry Pi の SD カードを焼き直して、いつものように Windows から SSH でつなごうとしたら、@ がずらりと並んだ警告が出て、入れなくなった——。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

「誰かが悪いことをしている可能性がある」と書かれているので、ドキッとします。でも、自分で SD を焼き直した直後なら、ほとんどの場合は心配いりません。この記事では、何が起きているのかと、1行で直す方法、そして「本当に大丈夫か」を確かめる方法を、実際に出た画面と一緒に書きます。

先に結論

自分で SD を焼き直した(または、同じ IP を前に別のラズパイで使っていた)なら、PowerShell で次の1行を打って、もう一度つなげば直ります。

ssh-keygen -R ラズパイのIPアドレス

ただし、焼き直した覚えも、機械を入れ替えた覚えも無いのに出たときは、すぐに消さないでください。下の「本当に大丈夫か確かめる」をやってからにします。

何が起きているのか——ラズパイの「身分証」が新しくなった

SSH でつなぐとき、ラズパイは最初に自分の身分証(ホスト鍵)を見せてきます。Windows 側は、一度つないだ相手の身分証を覚えておいて、次からは「前と同じ相手か」を確かめます。覚えている場所は、自分のユーザーのフォルダの中の .ssh\known_hosts というファイルです。

SD カードを焼き直すと、ラズパイは新しい身分証を作り直します。IP アドレスは前と同じなのに、身分証だけが違う。Windows から見ると「同じ住所に、知らない人がいる」状態なので、なりすまし(間に誰かが入り込む攻撃)を疑って、つなぐのを止めているわけです。

黄昏の戯れ

中の人

ラズパイの調子が悪くなったら、原因を追うより焼き直したほうが早い。で、焼き直すと毎回これが出る。ラズパイを触っていると、いちばんよく見る警告かもしれない。

実際に出た画面

手元で Raspberry Pi 3B+ の SD を焼き直した直後に、Windows の Git Bash からつないだときに、実際に出た画面です(自分の名前だけ伏せています)。PowerShell からつないでも、ファイルの場所の書き方が違うだけで、同じ文面が出ます。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:AkEg0uIVIZUH+fe8rw/+CCsvuspzCbAzoJqfg87lzGk.
Please contact your system administrator.
Add correct host key in /c/Users/(名前)/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /c/Users/(名前)/.ssh/known_hosts:20
Host key for 192.168.11.6 has changed and you have requested strict checking.
Host key verification failed.

大事なのは2か所です。

  • The fingerprint ... is SHA256:...:いまラズパイが見せてきた身分証の指紋です。あとで確かめるときに使います
  • Offending ED25519 key in ...known_hosts:20:Windows が覚えている古い身分証が、known_hosts の20行目にある、という意味です

直し方——古い身分証を消して、つなぎ直す

PowerShell で、警告に出た IP アドレスを入れて打ちます。

ssh-keygen -R 192.168.11.6

こう表示されます(かっこの中は、それぞれの環境で変わる所です)。

# Host (IPアドレス) found: line (行番号)
(known_hosts の場所) updated.
Original contents retained as (known_hosts の場所).old

その IP の古い身分証だけが消えます。ほかのラズパイやサーバーの記録はそのままです。消す前の中身は known_hosts.old として自動で残るので、間違えても戻せます。

あとは、いつもどおりつなぎ直すだけです。初めてそのラズパイにつないだときと同じように「この相手とつなぎますか」と聞かれるので、yes と答えると新しい身分証が覚えられ、次からは何も聞かれなくなります。

Warning: Permanently added '192.168.11.6' (ED25519) to the list of known hosts.

警告が消えたあと、次に「Permission denied (publickey)」が出ることがあります。これは別の話で、焼き直したラズパイに、パソコンの鍵(公開鍵)をまだ登録していないためです。手元でも、警告を直したすぐあとに、これが出ました。鍵の登録は、VS Code Remote-SSH でラズパイにつなぐ記事で書いています。

本当に大丈夫か確かめる——指紋を比べる

焼き直した覚えが無いのに出たとき、あるいは念のため確かめたいときは、ラズパイ本体の画面とキーボードで(SSH ではなく)次を打ちます。

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:(指紋) root@(ラズパイの名前) (ED25519)

ここに出た SHA256: のあとの文字が、警告に出た指紋と1文字も違わずに同じなら、警告の相手は自分のラズパイです(手元で試したときも、2つは1文字も違わずに一致しました)。安心して古い身分証を消して大丈夫です。違っていたら、同じ IP に別の機械がいます。消さずに、ルーターの機器一覧などで、その IP に何がつながっているかを先に確かめてください。

黄昏の戯れ

中の人

家の中で自分が焼き直しただけなら、まず問題ない。でも「毎回消せばいい」と覚えてしまうと、本当に何かあったときに気づけなくなる。消す前に、心当たりがあるかだけは考えるようにしている。

似ているけど別のこと——IP アドレスが変わったとき

手元では、しばらく電源を切っていたラズパイの IP アドレスが .6 から .41 に変わっていたことがありました(ルーターが割り当て直したため)。このときは、この警告は出ません。Windows から見ると「初めての住所」なので、初めての相手として「つなぎますか」と聞かれる形になります。

このときは、ラズパイ本体に触らなくても、Windows 側だけで「前と同じラズパイか」を確かめられます。同じラズパイなら身分証は変わっていないので、ssh のほうが「この身分証は、前に別の住所で覚えている」と教えてくれます。

The authenticity of host '(新しいIP) ((新しいIP))' can't be established.
ED25519 key fingerprint is SHA256:(指紋).
This host key is known by the following other names/addresses:
    (known_hosts の場所):(行番号): (前のIP)
Are you sure you want to continue connecting (yes/no/[fingerprint])?

3行目の「This host key is known by the following other names/addresses」の下に前の IP が出ていれば、同じラズパイです。yes と答えてつないで大丈夫です。

前の IP で覚えていない身分証なら、3行目は This key is not known by any other names. の1行になります。焼き直したあとなら身分証が新しくなっているので、こちらが出るのが普通です。心当たりが無いのにこちらが出たら、no と答えて、上の「指紋を比べる」をやってからにします。

前の IP で覚えている指紋は、PowerShell で次のように打っても出せます。質問に出た指紋と見比べることもできます。

ssh-keygen -l -F 前のIPアドレス
# Host (前のIP) found: line (行番号)
(前のIP) ED25519 SHA256:(指紋)

ほかの記事でよく見る、ssh-keyscan で相手の指紋を取って比べる方法は、手元の Windows に入っている ssh-keyscan(OpenSSH for Windows 9.5)では unsupported KEX method と出て止まりました(相手は手元の Linux 機。ラズパイを相手には試していません)。上のやり方なら ssh-keyscan は要りません。

こうなったとき出るものやること
SD を焼き直した(IP は同じ)@ が並んだ警告(REMOTE HOST IDENTIFICATION HAS CHANGED)ssh-keygen -R IP で古い身分証を消して、つなぎ直す
IP アドレスだけ変わった初めての相手として「つなぎますか」質問の中に前の IP が出ているのを見て yes
心当たりが無いのに警告が出た@ が並んだ警告消す前に、ラズパイ本体で指紋を比べる

やらないほうがいいこと

  • .ssh フォルダをまるごと消す:警告は消えてつながりますが、自分の鍵と接続先の登録(config)も一緒に消えます。鍵で入っていた相手には、つながらなくなります
  • known_hosts ファイルをまるごと消す:警告は消えますが、ほかの相手の記録も全部消えて、どの相手についても「前と同じか」を確かめられなくなります。ssh-keygen -R なら、その IP の行だけを消せます
  • 確かめる仕組みそのものを切る設定(StrictHostKeyChecking no など):警告は二度と出なくなりますが、本当になりすましがあったときにも気づけなくなります

この記事の「警告が出る → 1行で消す → つなぎ直す」までを、37秒の動画にもしました(YouTube ショート)。

確かめていないこと

  • Mac や Linux の ssh は試していません。ファイルの場所は ~/.ssh/known_hosts になるはずです
  • VS Code の Remote-SSH でつないだときにどう表示されるかは、今回は確かめていません
  • IP が変わったときの画面は、ラズパイの IP が実際に変わったときに撮ったものではありません。手元の Linux 機を相手に、「前の IP で覚えている」記録を試験用のファイルに作って出し直したものです

検証した環境:Windows 11。記事の警告の画面は、Raspberry Pi 3 Model B+ に Raspberry Pi OS(Debian 13 Trixie)を焼き直した直後に、Git Bash の ssh から実際に出たもの(2026年9月25日)。ssh-keygen -R の働き・つなぎ直し・指紋の照合は、Windows に入っている ssh(OpenSSH for Windows 9.5・PowerShell から)で、ふだんの known_hosts を触らないよう試験用のファイルを使い、手元の Linux 機を相手に出し直して確かめました(2026年10月7日)。「つなぎますか」の画面と、IP が変わったときの確かめ方は、同じ Windows の ssh(PowerShell から)で、同じく試験用のファイルを使って出し直しました(2026年10月8日)。

タイトルとURLをコピーしました