访问私钥时GPG挂起


16

我喜欢用我的PGP密钥在git commit上签名,所以当我去时我很震惊,git commit -S但是git并没有挂起我的PGP密钥密码。我已经几个月没有更改我的GPG设置了,从那以后就进行了很多提交,没有问题。此外,当我尝试使用查看我的私钥时gpg -K,gpg会挂起。但是,当我运行gpg -k以查看我的公共密钥时,它会像平常一样返回该列表。希望有人会对导致此问题的原因及其解决方法有所了解。


您是否通过ssh执行此操作?如果是这样,您是否gpg-agent在远程系统的.bashrc(等)中具有或类似的设置,并且配置为在遥控器的X显示屏或类似位置上提示?过去我也遇到过类似的问题(例如,从mythtv盒上的终端ssh-ing到台式机上运行需要gpg的东西。也有类似的问题ssh-agent),我用蛮力将其“修复” export GPG_TTY=$(tty)在.bashrc,以确保提示符始终在当前tty上。反正我不能忍受GUI passwd提示。
cas

1
不,我不是通过SSH执行此操作。奇怪的是,我发现如果我杀死gpg-agent,gpg就会再次起作用。我正在尝试找出原因并提出长期解决方案。
John Leuenhagen

我只是在gpg-agent手册页中注意到,将GPG_TTY设置为上述设置并不是我要努力完成的工作,这是必需的。手册页说您应该像我一样一直在.bashrc中设置它,并且还说It is important that this environment variable always reflects the output of the tty command.-这一定是我从那里得到的。您需要注意的另一件事是gpg-agent使用的pinentry程序。我将我的设置~/.gnupg/gpg-agent.conf/usr/bin/pinentry-curses
cas

Answers:


21

我遇到了这个确切的问题(OSX Sierra 10.12.6,gpg / GnuPG 2.2.5)

会挂起的命令:

gpg -K # --list-secret-keys
gpg -d # --decrypt
gpg --edit-key
gpgconf --kill gpg-agent

我的解决办法是提到由同约翰以上(即杀GPG代理),因为大多数其他方法上如何,可以-I-重启GPG代理也将挂起。

# Solution    
pkill -9 gpg-agent

然后,为了签名git commits,我按照上面cas所述设置了tty env ,也设置了gpg-failed-to-sign-commit-object

export GPG_TTY=$(tty)

那么,您每次重新启动时都必须重新杀死gpg吗?这就是我很久以来一直在做的事情。我希望我们能找到一种永久修复它的方法。
John Leuenhagen

我才刚开始遇到这个问题。杀死该gpg-agent似乎是使其重新工作的唯一方法。
亚历克西斯·泰勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.