搜尋

首頁  >  問答  >  主體

連接到遠端倉庫時出現Git錯誤:"主機金鑰驗證失敗"

<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粉668113768P粉668113768459 天前671

全部回覆(2)我來回復

  • P粉926174288

    P粉9261742882023-08-28 11:25:55

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

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

    回覆
    0
  • P粉312631645

    P粉3126316452023-08-28 11:08:39

    您正在透過 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 可以為了方便而儲存密鑰材料(而不是每個人都必須在每次連接到伺服器時輸入密碼),並且密碼不會透過網路傳輸。

    回覆
    0
  • 取消回覆