使用GnuPG及其守护进程gpg-agent


9

构建软件包时,我通常gpg-agent会记住并提供GnuPG密码Debian/Ubuntu。但是我还是很困惑gpg-agent。我调用gpg-agent为:

eval $(gpg-agent --daemon)

有时可以。但是令我困扰的是有时它不起作用。也就是说,有时构建过程会要求输入GnuPG一次我的密码,有时会询问一次,有时会多次询问。在我gpg-agent像以前一样调用之后,所有这些都在一个bash会话中发生。这次没有被要求输入密码并不能保证我下次不会被要求输入密码。我仍然不知道为什么gpg决定提示我输入密码,为什么不输入密码。

你也会发生这种事吗?

谢谢


1
您需要花费一些时间来尝试确定在什么情况下会失败以及在什么情况下会成功。如果您可以描述与故障可靠相关的内容,那么其他人更有可能考虑解决方案。
bignose

在Emacs中,对于GNUS和.authinfo.gpg,我得到了使用的提示gpg2,该提示与gpg-agent关联。所以(setq epg-gpg-program "/usr/bin/gpg2")为我工作。也许您必须发现哪个应用程序有问题,他们可能更喜欢gpg(1)。
Brady Trainor 2014年

Answers:


7

gpg-agenthttp://tr.opensuse.org/SDB找到了如何正确使用的方法: Using_gpg-agent

之后,我的gpg-agent守护程序GnuPG现在正在正确缓存我的密码。我的设置没有任何问题,只是我不知道如何测试GnuPG密码是否正确缓存。

现在,我这样做:

echo "test" | gpg -ase -r 0xMYKEYID | gpg

在站点上:“将0xMYKEYID替换为您的GnuPG密钥ID。运行此命令时,代理应打开图形密码对话框两次:首先进行签名或加密(gpg -ase)(gpg -ase),然后进行解密或签名检查( | | gpg)。从现在开始,每次使用GnuPG(从命令行或嵌入在KMail等图形程序中),gpg-agent的密码都会自动传递(直到超时到期或图形界面被删除)。关闭)。”

为了避免缓存过期,我现在设置了非常长的超时时间:

$ cat ~/.gnupg/gpg-agent.conf
max-cache-ttl 60480000
default-cache-ttl 60480000

根据linux.die.net/man/1/gpg-agent的说明,您还可以--write-env-file "${HOME}/.gpg-agent-info"在启动gpg-agent时添加,然后添加 if [ -f "${HOME}/.gpg-agent-info" ]; then . "${HOME}/.gpg-agent-info"; export GPG_AGENT_INFO fi 到.bashrc中以检测该代理是否已在运行。似乎更清洁的解决方案。
肖恩·比恩

@SeantheBean,太好了。我会对其进行测试,然后再回您...
xpt

WARNING: "--write-env-file" is an obsolete option - it has no effect从至少Apr 4 '16。参考:serverfault.com/a/481174
xpt
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.