解決:Host key verification failed. 的問題

今天在使用 Git 時不知道為什麼會出現這個錯誤,因此紀錄了一下解決的方式。

前言

偶爾在使用 SSH 連線至另一台主機時,可能會出現 “Host key verification failed” 的錯誤訊息,這是由於連線的主機密鑰不符合已知的主機密鑰所導致的。這通常是因為目標主機的 SSH 服務在上次連線後重新生成了密鑰,或是有可能是中間人攻擊的結果。若不處理此問題,您可能會無法安全地連線至目標主機。
聽起來很可怕對吧,所以趕快來看看我怎麼處理的!

錯誤訊息

VSCode

1
2
3
4
5
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

另外一個訊息是出現在終端機

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 *******
Please contact your system administrator.
Add correct host key in /Users/***/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/***/.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.

解決步驟

  1. 步驟一:刪除已知的主機密鑰檔案

在您的本地端電腦上,開啟您的終端機或命令提示字元,並輸入以下指令,以刪除已知的主機密鑰檔案:

1
$ ssh-keygen -R <hostname>

<hstname> 是欲連線的目標主機名稱或 IP 位址。
像我這邊就是需要填上 github.com

  1. 步驟二:將主機密鑰加入已知的主機密鑰列表

當您已經驗證過目標主機的密鑰後,您可以將其加入您的本地端主機密鑰列表中,以免下次連線時再次驗證。輸入以下指令:

1
$ ssh-keyscan github.com >> ~/.ssh/known_hosts

這個命令會將 GitHub 的主機密鑰添加到 ~/.ssh/known_hosts 文件中。如果本地端已經有這個文件,那麼您可以將命令中的 >> 改為 > 來覆蓋該文件。
結果就神奇的解決了!希望對搜尋到這篇文章的你也有幫助。