我刚开始使用git,我通过自制软件安装git和gpg.由于某种原因,我在得到这个错误时,git commit
我看了很多关于这个主题的其他stackoverflow问题,但没有一个对我有用.如何修复此错误以便我可以成功上传.
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud) \n\nGitHub 现在支持 SSH 提交验证,因此您可以使用自行生成的 SSH 公钥在本地签署提交和标签,这将使其他人对您所做更改的来源充满信心。如果提交或标签具有可加密验证的 SSH 签名,GitHub 会将提交或标签设为“已验证”或“部分验证”。
\n如果您已使用 SSH 密钥通过 GitHub 进行身份验证,现在可以上传相同或不同的密钥对\xe2\x80\x99s 公钥以将其用作签名密钥。您可以添加到帐户的签名密钥数量没有限制。有关更多信息,请访问GitHub 文档中的SSH 提交验证。
\n
鉴于最近发生的事件,我想知道:使用 SSH 密钥与 GPG 密钥签署提交之间有什么区别?
\n注意: 这是一个类似的问题,询问 GPG 和 SSH 之间的一般差异。这个问题具体是关于使用其中一种或另一种进行签名之间的区别。
\ngithub有一个很好的功能,可以显示使用gpg密钥签名git commit.
我按照以下文章:
现在我可以使用命令行默认签署我的提交和标签.
(这在github存储库中也可见/标记为"已验证")
然而,即使我打开/关闭"签名"按钮,eclipse也拒绝(正确)签署任何git提交(使用gpg).它也没有显示是否签署了提交.
我做错了什么或是eclipse/egit还没有(还)能够处理gpg?
我使用以下工具
SSH和GPG非对称密钥之间有什么区别?为什么git支持使用GPG进行签名而不是使用SSH代理?
根据 git,您现在可以使用现有的 ssh 密钥对提交进行签名。
https://github.blog/2021-11-15-highlights-from-git-2-34/#tidbits
接下来:https://unix.stackexchange.com/questions/269188/use-my-ssh-key-to-sign-git-commits。
我也一直在浏览这个文档: https: //git-scm.com/docs/git-config#Documentation/git-config.txt-gpgprogram,但目前还不清楚如何使用它。
我已将 gpg 格式设置为 ssh 并将签名设置为 true,因此目前它正在尝试对其进行签名但失败。我相信我还需要设置 user.signingKey 但我不知道格式是什么,即git config --global user.signingKey <what-is-supposed-to-go-here>?
我还有第二个问题。如果一年后我格式化我的电脑并丢失了我的密钥,我将无法验证这些提交是否仍然属于我。除了将密钥转储到某个在线驱动器中(无论如何我都可能会丢失它)之外,是否有一个好的标准将该密钥保存在某个地方?
编辑:我至少设法让 gpg 工作。以下:Git 错误 - gpg 无法签署数据,我的 gpg 崩溃了:
gpg: signing failed: Inappropriate ioctl for device gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
然后使用 Maven 在 MacOS 上添加export GPG_TTY=$(tty)到 bash,从“gpg:签名失败:设备的 ioctl 不合适”,最终为我工作,所以它至少使用 gpg 对其进行签名。
编辑:以为我设法让它工作,但没有。按照https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generate-a-new-ssh-key-and-adding-it-to-the-ssh-agent,我创建了一个新的 ed25519 ssh 密钥。
之后你需要git config --global gpg.format "ssh" …
我从文档中了解到可以对 git 标签和提交进行签名。
git config --global user.signingkey 0A46826A
文档:https : //git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
这适用于 GPG。有人用 X509 用户证书做过这样的事情吗?
看起来 GPG 与 x509 pki 证书不兼容或不可互换。由于这是在企业环境中,GPG 不是一个选项。
如果有人可以分享如何使用 x509 证书来实现这一点的想法或经验,那就太好了?需要什么以及实现这样的东西需要什么?