WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! は、以前に接続したときと、サーバーの「ホスト鍵」(サーバーの身分証明にあたる鍵)が変わっているときに、SSH が接続を止める警告です。 原因は2つで、どちらなのかを確かめてから対処します。

原因 よくある状況 対処
サーバーのホスト鍵が正当に変わった サーバーを作り直した・OS を入れ直した・同じ IP アドレスに別のサーバーを立てた 新しい鍵のフィンガープリントを確かめてから、ssh-keygen -R で以前の記録を消す
別のサーバーに接続させられている(なりすまし) 心当たりが無い 接続しない。管理者・ネットワークの担当に連絡する

「消せば直る」のは、1つ目が確かなときだけです。警告の文面も、なりすましの可能性を最初に挙げています。

確認環境:OpenSSH 9.6(Ubuntu 24.04)、ローカルの SSH サーバー(確認日 2026年10月11日)。一度接続したあと、サーバーのホスト鍵を別の鍵に差し替えて再現しました。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「REMOTE HOST IDENTIFICATION HAS CHANGEDの対処」

再現:ホスト鍵を作り直したサーバーに接続

$ ssh -p 2222 dev@127.0.0.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:H3U2VsJcqTg/2h4s0DWyC6KufxjFJzcQ8QObh9bKr4c.
Please contact your system administrator.
Add correct host key in /home/dev/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/dev/.ssh/known_hosts:1
  remove with:
  ssh-keygen -f '/home/dev/.ssh/known_hosts' -R '[127.0.0.1]:2222'
Host key for [127.0.0.1]:2222 has changed and you have requested strict checking.
Host key verification failed.
部分 意味
The fingerprint ... is SHA256:H3U2... 今つながろうとしているサーバーの鍵のフィンガープリント
Offending ED25519 key in .../known_hosts:1 以前の記録が、known_hosts の 1行目にある
remove with: ssh-keygen ... -R '[127.0.0.1]:2222' 以前の記録を消すコマンド
Host key verification failed. 接続を止めた

手順1:本当にサーバーの鍵が変わったのか確かめる

エラー文に出たフィンガープリントと、サーバーの本当のフィンガープリントを比べます。 本当のフィンガープリントは、SSH 以外の経路で確かめます。

確かめ方 コマンド・方法
サーバーにログインできる人に聞く・コンソールで確かめる サーバーで ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
クラウドの管理画面 サーバーのコンソールの出力・ログに、ホスト鍵のフィンガープリントが出ることがある
作り直した本人が、作業の記録で確かめる サーバーを作り直した・OS を入れ直した事実があるか
(サーバー側)
$ ssh-keygen -lf hk2.pub
256 SHA256:H3U2VsJcqTg/2h4s0DWyC6KufxjFJzcQ8QObh9bKr4c root@vm (ED25519)   ← エラー文の値と一致

確認環境では、差し替えた新しい鍵のフィンガープリントが、エラー文の SHA256:H3U2... と一致しました。一致すれば、正当に変わったと判断できます。

ssh-keyscan でも今のサーバーの鍵を取得できますが、これは今つながっている相手(なりすましかもしれない相手)から取得するので、確かめる手段にはなりません。

$ ssh-keyscan -p 2222 -t ed25519 127.0.0.1 | ssh-keygen -lf -
256 SHA256:H3U2VsJcqTg/2h4s0DWyC6KufxjFJzcQ8QObh9bKr4c [127.0.0.1]:2222 (ED25519)

手順2:以前の記録を消す(ssh-keygen -R)

$ ssh-keygen -R '[127.0.0.1]:2222'
# Host [127.0.0.1]:2222 found: line 1
/home/dev/.ssh/known_hosts updated.
Original contents retained as /home/dev/.ssh/known_hosts.old

エラー文の remove with: の行をそのまま実行すれば消せます。消す前の内容は known_hosts.old に残ります。ポートが 22 以外なら、[ホスト]:ポート の形で指定します。

接続のしかた -R に指定する名前
ssh user@server.example.com server.example.com
ssh user@192.0.2.10 192.0.2.10
ssh -p 2222 user@127.0.0.1 '[127.0.0.1]:2222'

ホスト名と IP アドレスの両方で接続したことがあるなら、記録はそれぞれ別なので、両方を消します。

known_hosts を開いても、ホスト名が見えない

$ cat ~/.ssh/known_hosts
|1|jWNEhnYVgleja1besm2dXB9Bd40=|5cwIOkDQg7Q8/b3emjp0LQMh29c= ssh-ed25519 AAAA...

Ubuntu の設定では、known_hosts のホスト名がハッシュ化(読めない形に変換)されていました。エディタで探すのではなく、ssh-keygen -F で探し、ssh-keygen -R で消します。

$ ssh-keygen -F '[127.0.0.1]:2222'
# Host [127.0.0.1]:2222 found: line 1

手順3:もう一度接続して、新しい鍵を記録する

$ ssh -p 2222 dev@127.0.0.1
The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
ED25519 key fingerprint is SHA256:H3U2VsJcqTg/2h4s0DWyC6KufxjFJzcQ8QObh9bKr4c.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[127.0.0.1]:2222' (ED25519) to the list of known hosts.

ここで表示されるフィンガープリントが、手順1で確かめたものと同じかをもう一度見てから yes と答えます。確かめたフィンガープリントを yes の代わりに貼り付けると、確認環境では、一致したときは接続され、違う値では Please type 'yes', 'no' or the fingerprint: と聞き直されました。

StrictHostKeyChecking=no にしない

$ ssh -o StrictHostKeyChecking=no -p 2222 dev@127.0.0.1
...(警告は出る)
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
connected-no                     ← 鍵が変わっていても、公開鍵の認証で接続できてしまった

StrictHostKeyChecking=no にすると、ホスト鍵が変わっていても接続が進みました。 パスワードでのログインは止められましたが、公開鍵の認証では接続できています。なりすましの相手に接続しても気づけないため、警告を消すためにこの設定を使うのは避けます。

設定 新しいサーバー 鍵が変わったサーバー
ask(既定) 確認してから記録 止める
accept-new 自動で記録 止める
yes 記録しない(止める) 止める
no 自動で記録 一部の制限つきで接続が進む(確認環境では公開鍵の認証で接続できた)

自動化(CI・スクリプト)で初回の確認を省きたいなら、accept-new を使います。新しいサーバーは自動で記録し、鍵が変わったときは止めます(OpenSSH のマニュアル)。

確認の手順(チェックリスト)

順番 確認すること 方法
1 心当たりがあるか サーバーの作り直し・OS の入れ直し・IP アドレスの付け替え
2 フィンガープリント エラー文の値と、SSH 以外の経路で確かめた値を比べる
3 一致しない・心当たりが無い 接続しない。管理者に連絡する
4 一致した エラー文の ssh-keygen ... -R ... で以前の記録を消す
5 もう一度接続 表示されるフィンガープリントを見てから yes
6 自動化 StrictHostKeyChecking=accept-new(no は使わない)

よくある質問

Q. known_hosts を丸ごと消してもよいですか。 A. 消せば警告は出なくなりますが、ほかのすべてのサーバーの記録も消え、次に接続したときに、どのサーバーについても本物かを確かめ直すことになります。対象のサーバーの行だけを ssh-keygen -R で消します。

Q. Windows(PowerShell)でも同じですか。 A. Windows の OpenSSH も、C:\Users\ユーザー名\.ssh\known_hosts に記録します。ssh-keygen -R ホスト名 で同じように消せます。

まとめ

  • サーバーの身分証明にあたるホスト鍵が、以前と違うときの警告
  • 原因はサーバーの作り直しかなりすまし。消す前に、どちらかを確かめる
  • エラー文のフィンガープリントと、SSH 以外の経路で確かめた値を比べる(ssh-keyscan は確かめる手段にならない)
  • 一致したら、エラー文の ssh-keygen -R をそのまま実行。known_hosts はハッシュ化されていることがある
  • StrictHostKeyChecking=no は、鍵が変わっていても接続が進む。自動化は accept-new

参考・出典

確認日はいずれも 2026年10月11日です。

  • OpenBSD manual pages「ssh_config(5)」(StrictHostKeyChecking):https://man.openbsd.org/ssh_config#StrictHostKeyChecking

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「REMOTE HOST IDENTIFICATION HAS CHANGEDの対処」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?