我已经使用gpg
进行加密一段时间了。有人建议我改用gpg2
。但是当我尝试使用gpg2
时,几乎什么都做不了;它会抱怨需要访问私钥,但我似乎无法在没有运行gpg-agent
的情况下使用私钥。
事实证明,我有意地禁用了gpg-agent
(使用chmod -x /usr/bin/gpg-agent
);这导致gpg2
的功能非常有限,并向stderr投诉。
我禁用gpg-agent
的原因是以下事件链。
首先,我会通过SSH连接到远程机器,“代理程序”会打开一个弹出窗口要求我解锁我的SSH密钥。我不喜欢这样做,因为:
- 屏幕上的弹出窗口打断了我的工作流程
- 屏幕上的弹出窗口不太可能被注意到,因此看起来连接停滞不前而不是查询以解锁加密密钥
- 代理程序似乎会缓存我的密码,而我绝对不希望我的密码被缓存(就像
sudo
烦人的使用密码缓存一样,在其配置中我可以禁用它);我将始终希望为我的加密密钥输入密语,每次它们用于任何正在使用它们的程序时 - 弹出窗口似乎是由单独的进程拥有,而我想要使用密钥的特定进程来查询密语(即使是实际进行查询的库也是如此);由于我大部分的活动都是使用命令行工具,因此GUI应用程序并不理想,因为我所做的并不是所有事情都有X11访问权限
- 自动在后台启动单独的进程会删除“一个命令,一个进程”的概念,特别是如果该后台进程然后在原始命令退出后持续存在
事实证明是 GNOME 的密钥代理,我无法卸载该代理而不卸载 GNOME。所以我通过 chmod -x /usr/bin/gnome-keyring*
禁用了它。然后我发现 SSH 会退回到另一个代理,所以我也使用相同的方法禁用了它 chmod -x /usr/bin/ssh-agent*
当我开始使用 gpg
时,我发现它有一个类似的代理,就是我正在询问的那个代理。出于同样的原因,我立即禁用了它;我希望软件始终要求我输入密码来使用私钥。我不希望密码被缓存任何原因。
因此,由于 gpg2
看起来需要 gpg-agent
,我想问:
- 我对密码短语缓存过度担忧吗?我很想看看或被指向与之相关的讨论。
- 是否存在最佳实践,可以更好地避免意外启用缓存密码的使用?
- 是否有一种方法可以在不运行
gpg-agent
的情况下使用gpg2
? - 由于代理是预期能够回答查询的 守护程序,是什么防止本地机器上运行的另一个用户或服务能够访问我的缓存或存储凭据?
gpg
而不是gpg2
的原因。 - mtraceur