【问题标题】:Git doesn't see gpg key as secret, even though it is, how do I fix it?Git没有将gpg密钥视为秘密,即使它是,我该如何解决?
【发布时间】:2019-03-11 23:05:45
【问题描述】:

所以我的 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

【问题讨论】:

    标签: git gnupg gpg-signature


    【解决方案1】:

    问题出在:

    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 配置匹配?

    【讨论】:

    • 这让我发疯了。事实上,git config --global gpg.program gpg2 解决了这个问题(尽管gpg 的输出与gpg2 的输出相匹配)。
    • 谢谢,解决了我的问题;我想我一定在某个地方得到了更新(以前的密钥工作正常),直到我遇到这个问题才注意到。
    • 谢谢。 “无密钥”错误对我来说是随机出现的。我试过你说的,但我的钥匙匹配。为了解决我的问题,我不得不使用git config --global gpg.program gpg,然后一切又开始工作了。
    猜你喜欢
    • 2011-08-01
    • 2017-09-16
    • 2018-11-06
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多