Git无法将gpg密钥视为机密,即使它是机密的,我该如何解决?

6

看起来我的gpg密钥是保密的,但是当我试图在git中签署我的提交时,它没有被识别为保密的。我完全不知道这是为什么。我相信我已经正确地设置了这个,但我的提交签名失败了。我做错了什么吗?提前感谢任何帮助。

[brad@reason entry-criteria-test]$ gpg --list-secret-keys --keyid-format LONG
/home/brad/.gnupg/secring.gpg
-----------------------------
sec   4096R/15980D34B4EED3FA 2019-03-11
uid                          Brad <brad@work.com>
ssb   4096R/3B437BF0F7366F6C 2019-03-11

[brad@reason entry-criteria-test]$ git config user.signingkey 15980D34B4EED3FA
[brad@reason entry-criteria-test]$ git config --global user.signingkey 15980D34B4EED3FA
[brad@reason entry-criteria-test]$ git commit -S -m "testing signed commit"
gpg: key B4EED3FA: secret key without public key - skipped
gpg: skipped "15980D34B4EED3FA": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object
[brad@reason entry-criteria-test]$ git config -l
user.name=Brad
user.email=brad@work.com
user.signingkey=15980D34B4EED3FA
color.ui=true
push.default=simple
commit.gpgsign=true
gpg.program=gpg2
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=git@github.work.com:entry-criteria-test.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.issue-00142.remote=origin
branch.issue-00142.merge=refs/heads/issue-00142
branch.issue-00144.remote=origin
branch.issue-00144.merge=refs/heads/issue-00144
commit.gpgsign=true
user.signingkey=15980D34B4EED3FA
1个回答

7
问题出在:
gpg.program=gpg2

尽管我已经安装了gpg 2.2.13,但git仍然想使用gpg。这有点合理,因为我上面用于gnupg的所有命令都是使用gpg而不是gpg2。所以如果你遇到了这个问题,请检查一下你的gpg2和gpg密钥是否不同。

gpg --list-secret-keys --keyid-format LONG
gpg2 --list-secret-keys --keyid-format LONG
git config -l

这两者是否不同?右侧的GPG密钥是否与您的Git配置文件匹配?

1
这让我疯狂了。确实,git config --global gpg.program gpg2 解决了这个问题(尽管 gpg 的输出与 gpg2 的输出相匹配)。 - Izzy
谢谢,问题解决了;我猜我一定在某个地方得到了更新(之前的密钥一直很好用),直到我遇到这个问题才注意到。 - Chris
谢谢。我遇到了“没有密钥”错误,而且是随机出现的。我尝试了你说的方法,但我的密钥是匹配的。为了解决我的问题,我不得不使用 git config --global gpg.program gpg 命令,然后一切都重新开始正常工作了。 - Hiebs915
2
这两个都没有解决我的问题。输出匹配很长,但是git不断报告找不到密钥。 - bc3tech

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