为什么使用SSH密钥签署提交会失败,并显示“格式无效”和“无法写入提交对象”错误?

12

我按照GitHub的指导告诉git关于我的SSH密钥,但当尝试签署一个提交时遇到问题。

git commit -S

我遇到了这个错误:
error: Load key 
"C:\\Users\\MyName\\AppData\\Local\\Temp/.git_signing_key_tmpC5KwFc": invalid format?

fatal: failed to write commit object

我可能做错了什么?


1
请注意,“failed to write commit object”仅是早期失败的结果。不过,为了便于搜索,将两者都包含在问题中是个好主意! - torek
你可以参考GitHub的官方文档https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent,它对我有很大帮助。 - KLMN
2个回答

23

设置

为了使 Git 成功签署提交,

  1. Git(v2.34 或更高版本)需要知道您的 SSH 密钥
  2. ssh-agent 需要在运行中
    • eval "$(ssh-agent -s)" 来启动它
    • (Windows 可以自动启动; Mac 和 Linux 已经自动启动。)
  3. ssh-agent 需要拥有您的密钥

签署

然后您就应该能够签署提交了!

git commit -S

验证

更多关于验证您用 SSH 签署的提交的内容。


2
当我将我的RSA密钥添加到ssh-agent中时,我的问题得到了解决。 - Rafs

0

以下步骤解决了我的问题

  1. 测试您的SSH连接
  2. 测试是否将SSH密钥添加到ssh-agent中
# you must see the public key in the output 
ssh-add -l 
  • 然后将以下命令的输出与githupe ssh key进行比较: ssh-add -l -E sha256 如果相同,则表示你的SSH密钥已正确添加到ssh-agent中。
  1. 启用 ssh-agent 服务的自动启动
  • 在搜索栏中搜索服务,然后找到两个ssh服务

    OpenSSH身份验证代理

    OpenSSH SSH服务器

  • 右键单击 > 优先级 > 更改启动类型为:自动 + 更改服务状态为:启动 > 应用 > 确定

或者你可以在你的bashrc(git bash配置文件)中添加简单代码

你可以在这里找到git bash配置文件:C:\Program Files\Git\etc ---> bash.bashrc

  • 使用ssh-add --apple-use-keychain ~/.ssh/id_ed25519_github将SSH密钥重新添加到ssh-agent

  • 确保公钥文件id_ed25519.pub和私钥文件id_ed25519的格式为UTF-8

  • 从GitHub设置中删除SSH密钥,然后add

  • 告诉Git你的SSH密钥这是最重要的步骤


  • 网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接