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日)。
