kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

GitHubのRSA SSH ホスト鍵変更に対してクライアント側の修正方法

GitHubのRSA SSH 秘密鍵が漏洩したため、2023/03/24 にGitHubのRSA SSH ホスト鍵が変更されました

github.blog

RSA SSH 秘密鍵って?

  • RSAは暗号化方式
  • RSA SSH 秘密鍵は、RSAでSSHするためにGitHubが持っている秘密鍵
  • 今回これが漏洩した

RSA SSH ホスト鍵って?

  • 秘密鍵と公開鍵のペアのこと
  • クライアント側は、接続するサーバから公開鍵を受け取って known_hosts に格納する
  • known_hosts に鍵が格納されると、次回以降のSSH接続では、known_hosts にある公開鍵と、サーバから受け取る公開鍵に差異が無いことを確認して、サーバが偽物に成り代わっていないかチェックするようになる

ホスト鍵が変わると何が困るの?

ホスト鍵(公開鍵も)が変わり、known_hosts にある GitHub の公開鍵と、GitHub受け取る公開鍵に差異が発生するため、SSH接続が失敗するようになる

具体的にはこんなエラーが出る

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
d5:2c:63:d9:bc:75:9d:de:b1:4e:36:28:9f:7a:9c:39.
Please contact your system administrator.
Add correct host key in /home/hoge/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/hoge/.ssh/known_hosts:3
RSA host key for github.com has changed and you have requested strict checking.
Host key verification failed.

👆/home/hoge/.ssh/known_hosts の3行目にある公開鍵と、サーバから受け取った公開鍵が違うよというエラーメッセージ

どうしたら良いの?

公式ドキュメントの手順に従えばOK

known_hosts から古い公開鍵を削除

ssh-keygen -f /home/hoge/.ssh/known_hosts -R github.com

👆github.com に関する known_hosts の情報を削除するよというコマンド

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=

実際に GitHub に SSH して動作確認する

$ ssh -T git@github.com

Warning: Permanently added the RSA host key for IP address '20.27.177.113' to the list of known hosts.
Hi hoge! You've successfully authenticated, but GitHub does not provide shell access.

警告が出なければOK

ウチのサーバの場合、さらに以下の警告も出たので同様に公開鍵を削除した

Warning: the ECDSA host key for 'github.com' differs from the key for the IP address '20.27.177.113'
ssh-keygen -R 20.27.177.113

参考

SSH公開鍵については、過去のblog記事で解説してます

kasei-san.hatenadiary.org