ブログ
2023.03.27

GitHubにRSA SSHでgit push、git fetch、git pullをしようとするとエラーになる問題の解決方法

GitHubは2023年3月23日(米国現地時間)に「github.com」のRSA SSH秘密鍵が漏洩したことを発表しました。
3月24日午前5時頃にRSA SSHホスト鍵を交換したので、問題は解決されたとのことですが、これまでRSA SSHでGitHubにアクセスしていた方は、GitHubにpushやGitHubからfetch/pullなどをしようとすると下記のエラーが出て混乱された方もいるかと思います。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s.
Please contact your system administrator.
Add correct host key in /Users/shingo/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/shingo/.ssh/known_hosts:4
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.

先に解決方法を述べると、交換されたのはGitHub側の鍵なので、
「GitHubの古い公開鍵を削除して新しい鍵を登録する」必要があります。
間違った手順として「自分が作成してGitHubに登録している公開鍵とペアになる秘密鍵を作り直してGitHubに登録し直す」ことをしてしまう方がいるかもしれませんが、後者の方法では解決しないのでご注意ください。
GitHubの公式ブログの手順に沿って行えば解決できますので、順を追って実行していきます。

GitHub のホスト鍵ペアの公開鍵の情報は、過去にコンソールからgithub.comへの接続経験があれば ~/.ssh/known_hostsに格納されています。
まず、自分のPC内の~/.ssh/known_hostsに入っている古いGitHubの鍵を削除するため、TerminalやPowershellなどのコンソール上で、下記のコマンドを入力して実行します。

$ ssh-keygen -R github.com

次にvimなどのエディタで~/.ssh/known_hostsに新しいGitHubの公開鍵を登録します。
今回更新されたのは、RSAの鍵なので、下記の値を~/.ssh/known_hostsのファイルの一番下の行などに書き込んで保存します。

github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=

もしくは、エディタで~/.ssh/known_hostsを編集せずに、下記のコマンドをコンソール上で実行しても同様にGitHubの鍵を更新することができます。

curl -L https://api.github.com/meta | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts

※上記のコマンドはGitHubの公式ブログから転記していますが、情報が古くなったり間違っていたりする可能性もありますので、念の為コピー元はGitHubの公式ドキュメント公式ブログを参照するようにしてください。

以上の手順で、再びコンソールからgit pushgit fetchgit pullなどのコマンドを実行すると正常に実行できるかと思います。

ちなみに、今回交換されたのは「github.com」のRSA SSH鍵のみで、問題となるのはSSH経由で「Git」を利用するケースです。ECDSAやEd25519を利用している場合は影響はありません。「github.com」のWebトラフィックやHTTPS経由の「Git」操作にも影響しませんので、RSA SSH以外の手順では特になにか設定をしなくてもこれまで通り利用できると思います。

ブログの執筆者

Shingo H.
workCTO
「ブランドを愛したくなる体験」をてがけるデジタルクリエイティブスタジオ GENEROSITY CTO / 魔法学校主宰 テクノロジーで子どもたちを魔法使いにします。

その他の記事

  1. 2023.12.01
    初のリアルイベント!FRONTEND MEETUP 2023!
  2. 2023.10.13
    2023年10月以降の主なエンジニア向けイベント
  3. 2023.09.22
    新興のJavaScriptフレームワークNueとは?公式サイトざっくりまとめ
  4. 2023.09.20
    テクニカルディレクターとは?現役テクニカルディレクターが解説
  5. 2023.09.16
    netlify formで送信後に404になる
  6. 2023.03.27
    GitHubにRSA SSHでgit push、git fetch、git pullをしようとするとエラーになる問題の解決方法
  7. 2023.02.25
    Astroでサブフォルダにbuildする方法
  8. 2023.02.19
    Astroでプロジェクトルートを基準にコンポーネントなどのパスを記述する方法
  9. 2023.02.19
    Astroでstylusファイルからglobalスタイルをimportする方法
  10. 2023.02.12
    「web制作におけるパスの書き方」絶対パス・ルート相対パス・相対パスの違いについて
  11. 2023.01.09
    フロントエンドクラブの新しい企みについて
  12. 2023.01.07
    Nuxt3でgenerate時にsitemapを動的に作る方法
  13. 2022.12.30
    なぜフロントエンドエンジニア向けコミュニティ「フロントエンドクラブ」を始めたのか
  14. 2022.12.28
    よく使うGitコマンド
  15. 2022.11.04
    HeadlessCMSを使った3つのサイト構築手法
  16. 2022.11.22
    WEB制作会社でエンジニアとして働くために必要なスキルについて
  17. 2022.10.27
    現役エンジニアから見るリアルなHeadlessCMS
一覧へ戻る