如果您最近(2021年下半年)突然出现了问题,可能是由于不兼容的哈希算法引起的。
截至本文发布时(2021年10月),Windows版Git的最新版本为2.33.1(发行说明),它已经采用了最新的OpenSSH 8.8p1(发行说明),而OpenSSH 8.8p1则弃用了SHA-1。同时,如果您的远程Git存储库仍然使用SHA-1,则会导致身份验证失败。
要查看您是否遇到了这种情况,请检查软件的版本:
ssh -V
git --version
如果您想了解更多有关IT技术的内容,您可以查看OpenSSH 8.8/8.8p版本发布说明中的“可能不兼容更改”部分。
简而言之:
解决方案1:通过将以下内容添加到您的~/.ssh/config
文件中,启用SHA-1:
Host <remote>
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
请记得将<remote>
替换为您的远程仓库主机名。
方法2:使用ECDSA或Ed25519重新生成密钥对,而不是RSA。例如:
ssh-keygen -t ecdsa -C <comment>
请记得用您自己的助记词替换<comment>
。然后,将生成的公钥上传到您的远程仓库。
顺便提一下,我在访问Gitee.com时遇到了这个提示信息。他们在服务器上使用golang.org/x/crypto/ssh
,并在这个问题上发布了一个页面,您可以在这里查看(中文)。
git@gitee.com: Permission denied (publickey).
sudo
克隆 - 这是另一个具有不同公钥的用户。 - Vitaly Zdanevichssh-keygen
工具生成了另一对密钥。在个人设置中删除旧的公钥,并将我的ssh生成的id_rsa.pub密钥添加到SSH和GPG密钥中,解决了克隆权限问题。 - Tanner Dolbyssh-add ~/.ssh/id_rsa
- undefined