くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

Githubでいきなりプッシュできなくなったら

Githubでいきなりプッシュできなくなったのでメモに残します。

ここ最近発生している場合には同じ事象の可能性はあるので参考にしてみてください。

エラー内容

プッシュしようとしたら以下のエラーメッセージが表示されました。 @がたくさん表示されるとビビります!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.

SSHでは初回接続時に接続先ホストの公開鍵を保存しておき、次回接続時にホスト鍵を比較して前回と同じホストに接続したかを確認するような仕組みになっています。 そのため、IPアドレスの振り直しやOS再インストールなどでホスト鍵が変わってしまった場合、エラーが発生してSSH接続が失敗します。

しかし、特にホスト鍵が変わるようなことをした覚えが全くなく、何か変えるようなことしたかなあと思っていたら、Githubにお知らせがありました。

github.blog

対応内容

エラーへの対処としては$HOME/.ssh/known_hostsの該当行を削除すれば同じエラーは出なくなります。 エディタで削除してもいいのですが、下記のようにssh-keygenコマンドの-Rオプションで消すこともできます。

$ ssh-keygen -R github.com
# Host github.com found: line 133 type RSA
/Users/xxxxx/.ssh/known_hosts updated.
Original contents retained as /Users/xxxxx/.ssh/known_hosts.old

困ったら、Githubのお知らせを見ると対処法が記載されているので確認するのが一番よさそうです。