連接到遠端倉庫時出現Git錯誤:"主機金鑰驗證失敗"
P粉668113768
P粉668113768 2023-08-27 12:34:09
0
2
669
<p>我正在嘗試連接到駐留在我的 Web 伺服器上的遠端 Git 儲存庫並將其複製到我的電腦。 </p> <p>我的指令使用以下格式:</p> <pre class="brush:php;toolbar:false;">git clone ssh://username@domain.example/repository.git</pre> <p>這對我的大多數團隊成員來說效果很好。通常執行此命令後,Git 會提示輸入使用者密碼,然後執行複製。但是,當在我的一台機器上運行時,出現以下錯誤:</p> <blockquote> <p>主機金鑰驗證失敗。 </p> <p>致命:無法從遠端讀取 儲存庫。 </p> </blockquote> <p>我們沒有使用 SSH 金鑰連接到此儲存庫,因此我不確定為什麼 Git 會在這台特定電腦上檢查金鑰。 </p>
P粉668113768
P粉668113768

全部回覆(2)
P粉926174288

正如我之前在克隆 git 儲存庫導致錯誤 - 主機金鑰驗證失敗。 fatal:遠端意外掛斷,將GitHub新增至已知主機清單:

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
P粉312631645

您正在透過 SSH 協定進行連接,如克隆 URL 上的 ssh:// 前綴所示。使用 SSH,每個主機都有一個金鑰。用戶端會記住與特定位址關聯的主機金鑰,如果主機金鑰發生更改,則拒絕連線。這可以防止中間人攻擊。

domain.example 的主機金鑰已變更。 如果您覺得這不可疑,請透過編輯${HOME}/.ssh/known_hosts 刪除 行,從本機快取中刪除舊金鑰domain.example 或讓SSH 實用程式為您完成此操作

ssh-keygen -R domain.example

從這裡,您可以自己記錄更新的金鑰

ssh-keyscan -t rsa domain.example >> ~/.ssh/known_hosts

或者,同等地,讓ssh 在您下次使用git fetchgit pullgit 連接時為您完成此操作推送(甚至是普通的ssh domain.example),在出現提示時回答「是」

The authenticity of host 'domain.example (a.b.c.d)' can't be established.
RSA key fingerprint is XX:XX:...:XX.
Are you sure you want to continue connecting (yes/no)?

出現此提示的原因是domain.example 刪除後不再位於您的known_hosts 中,並且可能不在系統的/etc/ssh/ssh_known_hosts 中,因此ssh無法知道連接另一端的主機是否真的是domain.example。 (如果 /etc 中的金鑰錯誤,則具有管理權限的人員將必須更新系統範圍的檔案。)

我強烈建議您考慮讓使用者也使用金鑰進行身份驗證。這樣,ssh-agent 可以為了方便而儲存密鑰材料(而不是每個人都必須在每次連接到伺服器時輸入密碼),並且密碼不會透過網路傳輸。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板