gpg2 和 git 签名

gpg2 和 git 签名

我在 gpg2 和在 git 中签署我的提交时遇到问题。我应该在这一切的序言中说,昨天在我重新启动之前,这一切都有效apt-get update && apt-get upgrade

现在,当我尝试签署我的提交时,我收到以下错误消息:

gpg: skipped "3C27FEA3B5758D9E": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

事实上,当我尝试隐藏我的更改时,我似乎也明白了。

当我执行 pgrep 时,我可以看到 gpg-agent 正在运行,因此我已杀死它并重新启动它。

我的文件中也有这个.bashrc

export GPG_TTY=$(tty)

输出gpg2 --list-keys /home/mdhas/.gnupg/pubring.gpg

------------------------------
pub   rsa2048/FBJJJJ1C 2017-10-11 [SC]
uid         [ultimate] Mark Dhas <[email protected]>
sub   rsa2048/3FDJJJJJ 2017-10-11 [E]

pub   rsa2048/BFJJJJJ7 2017-11-17 [SC]
uid         [ultimate] Mark Dhas <[email protected]>
sub   rsa2048/DEDDJJJJ 2017-11-17 [E]

pub   rsa4096/7137JJJJ 2017-10-11 [SC] [expires: 2021-10-11]
uid         [ unknown] co.co <[email protected]>
sub   rsa4096/A9BJJJJJ 2017-10-11 [E] [expires: 2021-10-11]

pub   rsa4096/B57JJJJJ 2018-10-31 [SC] [expires: 2021-10-31]
uid         [ unknown] Mark Dhas (New Key-Created on 2018-10-31) <[email protected]>
sub   rsa4096/36FJJJJJ 2018-10-31 [E] [expires: 2021-10-31]

请忽略 JJJJJ,它们是出于安全目的而尝试进行的少量编辑。

$ gpg2 --list-secret-keys
/home/mdhas/.gnupg/pubring.gpg
------------------------------
sec   rsa2048/FBJJJJ1C 2017-10-11 [SC]
uid         [ultimate] Mark Dhas <[email protected]>
ssb   rsa2048/3FDJJJJJ 2017-10-11 [E]

这是我的 git 配置的一部分

user.name=Mark Dhas
[email protected]
user.signingkey=3C2JJJJJJJJJJJJJ
core.editor=vim
gpg.program=/usr/bin/gpg2

任何关于如何纠正这个问题的想法都会很棒。

答案1

您没有 GPG 密钥的私有部分。 GPG 密钥由公钥(其他计算机可用于验证来自您的签名的信息)和私钥(创建签名或解密发送给您的消息所需的部分)组成。这就是 Git 给你一个错误的原因。它无法获取私钥来签署提交。您唯一的选择是找到整个密钥(包括私钥)的备份,或创建一个新密钥。

相关内容