如何使用 gpg、gpg-agent,尤其是针对 .authinfo.gpg?

4

(我使用kubuntu,但尝试保持平台独立的方法。)

欢迎提供概念说明或必要步骤。

我正在阅读文档,并尝试让gpg-agent工作一次,但每次尝试都需要重新启动,而且我并不真正理解它是如何工作的(只是剪切和粘贴代码)。

我想使用gpg-agent,这样我就可以在打开GNUS时不必每次输入.authinfo.gpg上的密码。


在深入了解问题之前,我想更多地了解这个过程。

  1. 在使用gpg-agent处理.authinfo.gpg之前,是否需要使用“gpg --gen-key”生成密钥?
  2. 对于我最小化使用gpg,是否需要配置涉及SSH的行?
  3. .authinfo.gpg是否需要放在某个钥匙串上?该钥匙串本身需要一个主密钥吗?

请纠正我对流程的想象。(是否需要缺失的密钥?)我很遗憾这里非常简略。

  1. 启动后,初始化会启动gpg守护进程,并进行其他相关设置。
  2. 当GNUS访问.authinfo.gpg时,它会与gpg-agent缓存某些内容。

以下是我考虑的一些细节。

设置了以下变量

GPG_AGENT_INFO    ${HOME}/.gpg-agent-info
GPG_TTY           $(TTY)

~/.gnupg/gpg.conf 文件中,我们需要查看 use-agent。我将虚拟的 #default-key ******** 注释掉,因为我认为它只在您有多个密钥时才需要使用。
~/.gnupg/gpg-agent.conf 文件中,我们需要查看
pinentry-program /usr/bin/pinentry-qt4
no-grab
default-cache-ttl 1800

(尽管pinentry-qt4可能会被其他版本所取代,例如pinentry-curses。)

虽然可能会有一些冗余的内容,但我也看到了一些关于.bashrc的指令,比如eval $(gpg-agent --daemon),或者

gpg-agent --daemon \
    --write-env-file "${HOME}/.gpg-agent-info"

我已经省略了与SSH相关的行,因为我认为现在不需要它。


我看到了一个故障排除命令。

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

但由于我不确定是否需要首先获得一个密钥,所以我没有进一步处理。


1
你正在使用基于Debian的系统。gpg是GnuPG 1版本,不支持使用gpg-agent。请改用gpg2 - Jens Erat
@JensErat,谢谢,将从GnuPG和EasyPG助手配置-Emacs auth-source库开始,遵循指示步骤,并牢记这一点。 - Brady Trainor
@JensErat,太棒了!我又玩了一会儿,最终谷歌搜索了“emacs gpg2”,并尝试了(setq epg-gpg-program "/usr/bin/gpg2")。看起来可以工作,谢谢! - Brady Trainor
gpg和gpg-agent在Debian环境下可以很好地运行。具体来说,是指使用gpg而不是gpg2。 - RichieHH
1个回答

1
这是我自己问题的非专业教程回复。
要检查是否已启用 gpg-agent,请尝试:
ps aux | grep gpg

我发现
iam@heeere:/e$ ps aux | grep gpg
iam       1490  0.0  0.0  16728   900 ?        Ss   17:25   0:00 gpg-agent --daemon --sh
iam       2611  0.0  0.0  11748   912 pts/0    S+   17:33   0:00 grep --color=auto gpg

这个与之一起。
(setq epg-gpg-program "/usr/bin/gpg2")

看起来解决了我的问题。正如Jens Erat指出的那样,gpg-agentgpg2相关联,而不是gpg

事实上,我从以下链接中删除了我所做的所有修改:

GnuPG and EasyPG Assistant Configuration - Emacs auth-source Library,

它仍然完美地工作。也就是说,不需要eval $(gpg-agent --daemon),也不需要gpg-agent.conf。虽然,我可能会添加一些内容,例如default-cache-ttl。虽然pinentry-curses看起来很吸引人,但我认为比我聪明的人已经努力防止gpg-agent从Emacs使用弹出窗口,所以我会放手不管。


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