解决GitHub报错You‘re using an RSA key with SHA-1, which is no longer allowed. Please use a newer client

  笔者今天在将本 Git 项目推送到 GitHub 时,GitHub 却一直报如下错误:

笔者报错时的运行环境:

  • Git 2.29.2.windows.2

  • TortoiseGit Release 2.11.0

git.exe push --progress "origin" M/local/dev
ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


git did not exit cleanly (exit code 128) (3531 ms @ 202X/XX/XX XX:XX:XX)

  原来是 GitHub 在 2022 年 3 月 15 日之后将不再支持 RSA 算法生成的密钥,原因是 RSA 不够安全,而笔者之前一直是使用如下命令生成密钥对的:

ssh-keygen -t rsa -C "邮箱"

  可以看出,在上述命令中,实际上使用的是 RSA 算法来生成的密钥,现在只要更改加密算法即可,可以选择 ed25519


【相关链接】


生成密钥对修正事项 1:使用 Git 生成密钥对

  如果喜欢使用 Git 生成密钥对,现在需要输入以下生成密钥对。然后一直按 ENTER 即可:

ssh-keygen -t 加密算法 -C "邮箱"

  其中,上面的 邮箱 要改为自己需要设置的相应值,且双引号不能丢。这里,加密算法可以使用 ed25519。即:

ssh-keygen -t ed25519 -C "邮箱"

  可见,上面的命令生成了密钥对,并将其保存在了文件夹 C:\Users\Windows 用户名\.ssh 中。打开该文件夹,可以看到两个文件:id_加密算法名id_加密算法名.pub。第一个文件是私钥,第二个文件是公钥。这两个文件其实都是文本文件,都可以文本方式打开。公钥需要提供给远程平台(这里为 GitHub),因此需要复制其中的内容。这里,需要复制的公钥的内容为全文。

生成密钥对修正事项 2:使用 TortoiseGit 生成密钥对(方法 1)

  如果喜欢使用 TortoiseGit 生成密钥对,现在需要按如下步骤生成密钥对。

  1. 在开始菜单中找到 TortoiseGit 的一个程序 PuTTYgen,并运行。

    在这里插入图片描述

  2. 导入前面使用 Git 生成的私钥

    在这里插入图片描述

  3. 保存私钥。注意:此过程不需要点击 Generate


    【答疑】

      前面已经通过 Git 生成了私钥,为什么还需要再使用 TortoiseGit 导入这个私钥,然后再生成另一个私钥呢?因为 Git 生成的那个私钥,在使用 TortoiseGit 进行文件传输时,TortoiseGit 无法解析。TortoiseGit 只能解析自己生成的后缀为 .ppk 的那种私钥,所以在使用 TortoiseGit 进行文件传输时,必须要先生成 TortoiseGit 版本的私钥。


    在这里插入图片描述

  4. 在密钥列表中添加此密钥。

    在这里插入图片描述

  5. 添加刚刚保存的私钥。

    在这里插入图片描述

生成密钥对修正事项 2:使用 TortoiseGit 生成密钥对(方法 2)

  如果喜欢使用 TortoiseGit 生成密钥对,现在需要按如下步骤生成密钥对。

  1. 在开始菜单中找到 TortoiseGit 的一个程序 PuTTYgen,并运行。

    在这里插入图片描述

  2. 选择加密算法,然后点击 Generate 生成密钥对,这里选择的是 Ed25519注意:不要选择 RSA

    在这里插入图片描述

  3. 需要不断在 PuTTY 软件界面内晃动鼠标,因为生成密钥时需要鼠标移动来生成随机数。

    在这里插入图片描述

  4. 生成成功之后,显示出来的就是公钥了。与前面在 Git 中一样,需要全文复制这个公钥,以及保存自己的私钥。

    在这里插入图片描述

  5. 在密钥列表中添加此密钥。

    在这里插入图片描述

  6. 添加刚刚保存的私钥。

    在这里插入图片描述

将新密钥导入 GitHub 中

  在得到新公钥之后,还需要将其导入到 GitHub 中,关于这方面的内容,可见笔者的另一篇博客:

  Git、TortoiseGit、GitHub、Gitee、GitLab 安装与入门使用:
https://blog.csdn.net/wangpaiblog/article/details/121278972

  提醒:私钥需要妥善保存。如果没有私钥,上传至 GitHub 的公钥等于作废。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值