P粉9261742882023-08-28 11:25:55
正如我之前在克隆 git 儲存庫導致錯誤 - 主機金鑰驗證失敗。 fatal:遠端意外掛斷,將GitHub新增至已知主機清單:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
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 fetch
、git pull
或git 連接時為您完成此操作推送
(甚至是普通的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
可以為了方便而儲存密鑰材料(而不是每個人都必須在每次連接到伺服器時輸入密碼),並且密碼不會透過網路傳輸。