Mac 升级系统Git因公钥问题报错Permission denied

Mac 升级系统Git因公钥问题报错Permission denied

问题描述

Mac升级系统到macOS Ventura,系统升级完毕后发现git拉取代码需要输入密码,输入完正确密码后就会报Permission denied的错误,如下图所示:
在这里插入图片描述
输入正确密码仍然无法正常访问仓库。

问题分析

从上图可以看到,报错信息为Permission denied,分析原因就是ssh的密钥错误了,密钥没有调整变更,为什么密钥会错误了呢,首先采取了比较粗暴的方法,移除原密钥,重新生成密钥,操作如下:

 ssh-keygen -t rsa -C "xxx@xxx"//邮箱信息

生产私钥与公钥后将公钥配置到仓库中(在此就不做过多赘述了,不了解者可自行查询)
配置完成后重新运行还是报错。
还是有问题,难道是macOS做什么调整了?
通过查证发现,macOs Ventura内置使用了OpenSSH_9.0p1,通过OpenSSH Release Note可以了解到, 从OpenSSH 8.8/8.8p1版本开始,ssh-rsa算法默认是关闭的了,有兴趣的可以查看release-8.8版本说明

解决办法

方法一:
在release-8.8版本中给出了兼容的解决方案,若要使用ssh-rsa算法时,可以对对应的host进行配置,方式如下:

Host old-host
    HostkeyAlgorithms +ssh-rsa
	PubkeyAcceptedAlgorithms +ssh-rsa

对于我们git不可用的问题,可以修改~/.ssh/config文件的配置信息,在文件中添加如下信息:

Host *
    HostkeyAlgorithms +ssh-rsa
	PubkeyAcceptedAlgorithms +ssh-rsa

这样通过命令行ssh-keygen -t rsa -C "xxx@xxx"生产的密钥就可正常使用了。

方法二:
由于我们的密钥是通过rsa算法生产的,系统关闭rsa算法这扇门,肯定还会给我们开另外一扇窗,例如说明中描述的,信息如下所示:

We recommend enabling RSA/SHA1 only as a stopgap measure until legacy
implementations can be upgraded or reconfigured with another key type
(such as ECDSA or Ed25519).

可以使用Ed25519算法来代替,通过Ed25519算法生成密钥,然后配置到服务器中,生产密钥命令如下所示:

ssh-keygen -t ed25519
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunfeigeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值