我已经使用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
,我想问:
- 我是否对密码缓存的使用过于偏执?我很想看到或被指出对此的讨论。
- 是否有最佳实践可以更好地避免意外启用缓存密码?
- 有没有一种
gpg2
不用gpg-agent
跑就可以使用的方法? - 鉴于代理是能够回答查询的守护进程,是什么阻止了在本地计算机上运行的其他用户或服务能够访问我缓存或存储的凭据?