git 2.33.1 訪問服務器報Permission denied (publickey)


Git for Windows 2.33.1 訪問服務器報Permission denied 問題的解決方法
起因
原因
解決方法
方法1
方法2
方法3
方法4
起因
近期git 更新了最新的2.33.1版本,好多小伙伴突然發現無法訪問服務器。

git pull的時候命令行會提示

git@git.xxxxx.com: Permission denied (publickey).
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
莫名的提示,我還以為git版本有問題

原因
GIT 2.33.1版本集成了最新的OpenSSH v8.8p1版本,此版本放棄了歷史相當悠久的rsa-sha1的支持。
當我們習慣於用命令行

ssh-keygen -t rsa -C "your_email@example.com"
1
來創建密鑰的時候,要小心了,以后不再支持。

SHA-1 哈希算法,此前被發現構造前綴碰撞攻擊成本已降至低於 5 萬美元(實際為 4.5 萬美元),因此OpenSSH開發團隊決定從8.2版本禁用 ssh-rsa 公鑰簽名算法。有一些更好的算法可以替代,包括 RFC8332 RSA SHA-2 簽名算法 rsa-sha2-256/512、ssh-ed25519 簽名算法與 RFC5656 ECDSA 算法。目前這些算法在 OpenSSH 中都已經支持。

值得注意的是,一般情況下,如果服務器OpenSSH版本大於等於7.2,那么已經支持ssh-rsa2-256/512,用戶無需做額外的處理。但是如果服務器版本仍然比較低,就需要更換密鑰。

解決方法
方法1
如果你急需訪問倉庫,而暫時不想修改密鑰,可以在密鑰所在的.ssh目錄下的config文件(沒有的話自行創建)添加如下配置即可訪問。

Host git.xxxxxx.com
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
1
2
3
方法2
重新生成更安全的密鑰。
在生成之前,要確定服務器是否支持相應的密鑰加密算法。
使用 ECDSA 或者 ED25519 算法替代RSA以一個不錯的選擇

ssh-keygen -t ed25519 -C "your@example.email"
1
參考文章
https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html
https://git-scm.com/docs/gitfaq#_credentials

方法3
回滾git到2.32版本

方法4
windows版本的git 2.33.1 安裝的時候,可以選擇“use external OpenSSH”。這樣可以不使用內置的OpenSSH。你可以指定一個可用的OpenSSH安裝路徑。


————————————————
版權聲明:本文為CSDN博主「Achilles」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cjmqas/article/details/120980593


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM