强制 gpg-agent 忘记密码

强制 gpg-agent 忘记密码

我在 ubuntu 12.04 上使用 gpg-agent 2.0.17 和 gpg 1.4.11,并使用 Thunderbird 的 Enigmail 插件。打开加密电子邮件时,Enigmail 会使用关联的 pinentry 程序调用 gpg-agent 并要求输入密码。然后我可以选择设置缓存密码的有效期,通常设置为会话结束时。

由于我很少关闭或注销会话,因此我想强制 gpg-agent 在锁定会话时忘记所有缓存的密码。我搜索了一种方法,gpg-agent 的手册页指出,-SIGHUP 将刷新所有密码 - 然而,与手册页相反,缓存的密码不会被忘记。

关于如何强制 gpg-agent 忘记密码有什么想法吗?

答案1

gpg-agent缓存密码的 TTL 由的选项控制:

--default-cache-ttl n
  Set the time a cache entry is valid to n seconds.  The default is 600 seconds.

--max-cache-ttl n
  Set  the  maximum time a cache entry is valid to n seconds.  After
  this time a cache entry will be expired even if it has been accessed
  recently.  The default is 2 hours (7200 seconds).

按照按需控制的方式,如果你能够在锁定屏幕时触发命令,则使用钥匙链处理gpg-agent可以用来执行

keychain --clear --agents gpg

这将终止所有 gpg-agent 托管实例。但是,您应该有一种方法可以keychain --agents gpg --eval $gpg在解锁屏幕时执行。也许太麻烦了。

答案2

gpgconf --reload gpg-agent是强制代理忘记缓存在内存中的密码的一种方法。目前(gpg 2.0-2.1)这 [几乎] 相当于pkill -HUP gpg-agent。我说“几乎等同”是因为理论上你可以运行多个代理,而 pkill 会尝试向所有代理发送 SIGHUP。

答案3

我使用一个简单的:

echo RELOADAGENT | gpg-connect-agent

发挥魅力。

--

已编辑:已使用、、Debian 10进行测试gpg 2.2.12libgcrypt 1.8.4

答案4

这是对我有用的清除单个密码(即密码)的方法 - 从终端运行 - 如果你想清除所有密码https://superuser.com/a/1269901/457084作品:

gpg-connect-agent "clear_passphrase --mode=normal <cacheid>" /bye

<cacheid>如果您执行以下命令,最有可能出现可用的键盘把手 位置是gpg --list-keys --with-keygrip

<path to pubring.kbx>
------------------------------------------------
pub   rsa2048 2017-12-11 [SC] [expires: 2019-12-11]
    <keyid>
    Keygrip = <keygrip>
uid          `<email>

https://web.archive.org/web/20180528210236/https://demu.red/blog/2016/06/how-to-check-if-your-gpg-key-is-in-cache/

相关内容