git-2_34_1访问服务器报Permission-denied(publickey)

Terwer 经验分享评论27字数 1325阅读4分25秒阅读模式

起因

近期 git 更新了最新的 2.34.1 版本,好多小伙伴突然发现无法访问服务器文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

git pull 的时候命令行会提示文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

 git@git.xxxxx.com:  Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

莫名的提示,我还以为 git 版本有问题。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

注意:Mac​ 更新到 Ventura13.0​ 也会有此问题。因为 git​ 随着系统升级到了 2.32.1​ 。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

➜  .ssh cd ~/
➜  ~
➜  ~ git --version
git version 2.32.1 (Apple Git-133)

原因

GIT 2.33.1 版本集成了最新的 OpenSSH v8.8p1 版本,此版本放弃了历史相当悠久的 rsa-sha1 的支持 当我们习惯于用命令行文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

 ssh-keygen -t rsa -C "your_email@example.com"

来创建密钥的时候,要小心了,以后不再支持文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

SHA-1 哈希算法,此前被发现构造前缀碰撞攻击成本已降至低于 5 万美元(实际为 4.5 万美元),因此 OpenSSH 开发团队决定从 8.2 版本禁用 ssh-rsa 公钥签名算法。有一些更好的算法可以替代,包括 RFC8332 RSA SHA-2 签名算法 rsa-sha2-256/512、ssh-ed25519 签名算法与 RFC5656 ECDSA 算法。目前这些算法在 OpenSSH 中都已经支持。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

值得注意的是,一般情况下,如果服务器 OpenSSH 版本大于等于 7.2 ,那么已经支持 ssh-rsa2-256/512 ,用户无需做额外的处理。但是如果服务器版本仍然比较低,就需要更换密钥。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

解决方法

方法 1

如果你急需访问仓库,而暂时不想修改密钥,可以 在密钥所在的 .ssh 目录下的 config 文件(没有的话自行创建)添加如下配置即可访问。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

 Host git.xxx.com
 HostkeyAlgorithms +ssh-rsa 
 PubkeyAcceptedAlgorithms +ssh-rsa

修改后的配置文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

 Host git.xxx.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_mac
   HostkeyAlgorithms +ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa

方法 2

重新生成更安全的密钥。 在生成之前,要确定服务器是否支持相应的密钥加密算法。 使用 ECDSA 或者 ED25519 算法替代 RSA 以一个不错的选择文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

 ssh-keygen -t ed25519 -C "your@example.email"

参考文章文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

https://git-scm.com/docs/gitfaq#_credentials文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

方法 3

回滚 git 到 2.32 版本。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

文章更新历史
2022-08-30 feat:初稿。文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

2022-10-26 feat:新增Mac更新场景。 文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html

文章源自浅海拾贝-https://blog.terwergreen.com/git-2342-permission-denied-after-upgrade.html
相关文章
  • 扫码加我微信
  • 验证消息请输入:来自你的博客
  • weinxin
  • 我的微信公众号
  • 微信扫一扫与我交流吧
  • weinxin
Terwer
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: