无法使用 GPG 签署任何内容:“gpg2 签名失败:操作已取消”

无法使用 GPG 签署任何内容:“gpg2 签名失败:操作已取消”

自从我的 xenial 工作站最近进行了一些软件包升级后,我发现我无法再签署 Git 提交,我会收到如下错误消息,并且不再弹出对话框来输入我的密钥密码:

$ git commit -S 
error: gpg failed to sign the data
fatal: failed to write commit object

经过一番搜索,我发现2016 年页面谈论 pinentry 和 gpg2 之间的不匹配(我gpg2在我的 GPG 程序中设置为.gitconfig),事实上就像他们提到的那样,我有 gpg2 2.1.x 和 pinentry 0.9.x:

$ gpg2 --version        
gpg (GnuPG) 2.1.11                                        
libgcrypt 1.6.5                                                        
$ pinentry --version    
pinentry-gnome3 (pinentry) 0.9.7 

他们建议的另一项测试同样失败了

$ echo test | gpg2 --clearsign 
-----BEGIN PGP SIGNED MESSAGE-----                               
Hash: SHA256                                                     

test                                                             
gpg: signing failed: Operation cancelled                         
gpg: [stdin]: clearsign failed: Operation cancelled              

我正在运行 gpg-agent,但我不知道重新运行它是否会破坏它gpg-agent。似乎没有任何服务可以启动它。

我不确定最近的更新是否确实将 gnupg2 包升级到了 2.1.x,但我无论如何也找不到可以尝试降级到的 2.0.x,或者 xenial 的 1.x pinentry。

我刚才查看的页面是不是在转移视线?我该如何重新签署文件?


附言:几天后它又开始工作了,但我不知道我做了什么;看起来没什么不同。也许重启就可以解决问题?:/

$ gpg2 --version
gpg (GnuPG) 2.1.11
libgcrypt 1.6.5
...
$ pinentry --version
pinentry-gnome3 (pinentry) 0.9.7
...
$ echo test | gpg2 --clearsign
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

test
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJbT0xjAAoJEAnk6ni30keKELoP/iGeP7PkxEsJSmCwgUMJpqWq
qIV/hobcZ2iqLi5WjCMtEAmJRwVu89GT0MW2wHl28t5+iJriW67pg4MoT1zKGSPN

答案1

我知道这已经很老套了,但是对于遇到这个问题的人来说,你可能忘记运行了git config --global user.signingkey yourkey

答案2

我遇到了同样的问题,原因是我的 GPG 密钥已到期

thech 中,seahorse您可以用 git 配置中的 key 来查看 key 的状态,或者在控制台中使用

YOURKEY=$(git config -l | grep signingkey | cut -d"=" -f 2)
gpg2 -K --keyid-format SHORT | grep $YOURKEY -A3

编辑你的密钥,以便它不会太快过期,然后将其添加到你的全局配置中

git config --global user.signingkey $YOURKEY

也许重新启动系统以应用更改

相关内容