`git push`しようとしたら`WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!`が出た時の対処ログ
何が起こったか
明らかにヤバそうな警告メッセージが出たので、メモしながら対処していく。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 RSA key sent by the remote host is
SHA256:xxxxx
Please contact your system administrator.
Add correct host key in /Users/xxx/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/xxx/.ssh/known_hosts:1
Host key for github.com has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
以下DeepL訳
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
警告:リモートホストの識別が変更されました! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
誰かが何か悪さをしている可能性があります!
誰かが今まさにあなたのことを盗聴している可能性があります(中間者攻撃)!
また、ホストの鍵が変更されたばかりである可能性もあります。
リモートホストから送信されたRSA鍵のフィンガープリントは以下の通りです。
SHA256:xxxxx
システム管理者に連絡してください。
このメッセージを消すには、/Users/xxx/.ssh/known_hostsに正しいホスト鍵を追加してください。
/Users/xxx/.ssh/known_hosts:1に問題のあるRSAキーがあります。
github.comのホスト鍵が変更されたため、厳密なチェックを要求しています。
ホスト鍵の検証は失敗しました。
fatal: リモートリポジトリから読み取れませんでした。
正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
非常に怖いことを言っているが、先日別のPCからgithubに接続していた時に、うまくつながらず以下のコマンドを実行して対処した記憶があるのでこれが原因と予想。
ssh -T git@github.com
メッセージの内容からわかること
原因
/Users/xxx/.ssh/known_hosts:1に問題のあるRSAキーがあります。
github.comのホスト鍵が変更されたため、厳密なチェックを要求しています。
ホスト鍵の検証は失敗しました。
fatal: リモートリポジトリから読み取れませんでした。
-> 問題のあるRSAキーがあり、ホスト鍵の検証に失敗した。そのためリモートリポジトリからの読み取りに失敗した。
対処法
/Users/xxx/.ssh/known_hostsに正しいホスト鍵を追加してください。
正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
-> 文字通り、正しいホスト鍵を追加して、正しいアクセス権とリポジトリの存在を確認する。
結論
以下の流れで解決した。
- .ssh/known_hostsから
github.com
のホスト情報を削除する
% ssh-keygen -R github.com
# Host github.com found: line 1
/Users/xxx/.ssh/known_hosts updated.
Original contents retained as /Users/xxx/.ssh/known_hosts.old
- 再度githubにssh接続する(途中の選択肢で
yes
と回答する)
% ssh -T git@github.com
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
XX00000 key fingerprint is SHA256: xxxx
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (XX00000) to the list of known hosts.
Hi user! You've successfully authenticated, but GitHub does not provide shell access.
-
git push
を試す->成功
参考にした記事
原因(おそらく)
若干あっているか心配だったりするが、多分こんな感じだと考えている。
- 前提として、ローカルの
.ssh/known_hosts
には接続先のサーバ情報(SSHホストキー))が記載されている。 - 以前他のPCで
ssh -T git@github.com
を実行したときに、github.comのサーバー情報が更新された(多分) - 2の結果、今回のPCからgithubへ接続した際のサーバー情報が、1の
.ssh/known_hosts
に記載されていた情報と異なるという事態に。 -
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
発生!
従って、
.ssh/known_hosts
の古いサーバー情報(SSHホストキー)を削除して(結論の1)、
新たにSSH接続することでホストキーを上書きして(結論の2)、
サーバー情報を一致させたことで解決したものと思われる。
ここまで書いて気づいたが、そうなるとまた別PCから接続するときに、同じエラーが発生するかも...?
そうなったら、.ssh/known_hosts
の中身を確認して、2台のPCで共有すればいいのかな?
これは発生したら考えよう。
番外編
ChatGPTに今回の警告メッセージが発生した原因について相談してみた。
事前情報は、警告メッセージと、解決した時に自分がやったこと(#結論で記載した内容)
この場合の警告メッセージの原因として最も考えられるのは、github.comのSSHホストキーが前回接続したときから変更されたことです。
SSHは、ホストキーを使ってリモートサーバーを識別し、正しいサーバーに接続していることを確認します。リモートサーバーに初めて接続すると、SSHはサーバーのホストキーを確認し、そのキーを信頼するかどうかを確認するよう促します。ホスト鍵はその後、ローカルのknown_hostsファイルに保存されます。
リモートサーバーのホスト鍵が変更された場合、SSHはその事実を知らせるために警告を発します。あなたが見た警告メッセージは、github.comのホスト鍵が前回接続したときから変更されており、この変更が正当であることを確認する必要があることを示します。
場合によっては、サーバーの再設定や更新など、正当な理由によってホストキーが変更されることがあります。しかし、攻撃者がリモートサーバーとの通信を傍受し、偽のホスト鍵を提示する中間者攻撃により、ホスト鍵が変更された可能性もあります。攻撃されていないことを確認するために、新しいホストキーを確認することが重要です。
私もNext.jsのプロジェクトをpushしたときに、同じエラーに遭遇しました!
ふじしろさんのスクラップを参考にしてエラー解決ができて救われました!
ありがとうございました。
ありがとうございます!助かりました。。!
一つだけ、pushするたびに毎回yesを入れないといけなくなりませんでしたか?
私の環境(今回の警告が発生した方のPC)では今のところ、push時に何かを求められたりすることはないですね...
上の方のコメントでaiji42さんがgithub公式の告知リンクを貼ってくださっているのですが、リンク先で公式の対処法が説明されていたので、そちらが役に立つかもしれません...!
ありがとうございます!
公式を見て、known_hostsの以前のpublic keyを削除したら出なくなりました。
本当の原因
- ローカルの
.ssh/known_hosts
には、githubの2023/3/23より前のサーバ情報(SSHホストキー)が記載されていた。 - githubが2023/3/23にサーバー情報(SSHホストキー)を更新した(漏洩したらしい)
- 2の結果、今回のPCからgithubへ接続した際のサーバー情報が、1の
.ssh/known_hosts
に記載されていた情報と異なるという事態に。 -
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
発生!