我想将 gpg-agent 中的密码缓存设置为 15 秒。这是我所做的:
我的两个配置文件及其内容:
/home/xixor/.gnupg/gpg.conf - 告诉 gpg 使用 gpg-agent:
use-agent
/home/xixor/.gnupg/gpg-agent.conf - 告诉 gpg-agent 缓存密码以解锁 gpg 密钥 15 秒并使用 pinentry 程序输入密码:
default-cache-ttl 15
max-cache-ttl 15
pinentry-program /usr/bin/pinentry
重新加载 gpg-agent 并通过从 gpg-agent.conf 读取的日志确认:
echo RELOADAGENT | gpg-connect-agent
OK
Aug 08 20:35:23 opticon gpg-agent[35328]: SIGHUP received - re-reading configuration and flushing cache
Aug 08 20:35:23 opticon gpg-agent[35328]: reading options from '/home/xixor/.gnupg/gpg-agent.conf'
仔细检查以确认此时已加载正确的 15 秒配置:
gpgconf --list-options gpg-agent | awk -F: '$1=="default-cache-ttl" {print $10}'
15
gpgconf --list-options gpg-agent | awk -F: '$1=="max-cache-ttl" {print $10}'
15
此时,我可以调用一个需要解锁我的 gpg 密钥的程序,并且正如预期的那样,它会提示使用 pinentry 输入密码来解锁密钥。
然后,我等待至少 15 秒再次运行相同的命令,并期望它再次使用 pinentry 询问密码(因为 15 秒缓存应该已过期),但没有密码提示,这意味着它不尊重中的缓存设置gpg-agent.conf。它似乎恢复到默认的 600 秒缓存。
我没有安装任何其他可能竞争 gpg 访问权限的钥匙串程序(如 gnome-keychain/seahorse/kwallet)。
我在这里缺少什么?
答案1
经过几个小时的搜索,我发现如果/当用户使用智能卡存储其 gpg 密钥时,gpg-agent.conf 中的 gpg-agent 缓存设置将被忽略。
就我而言,我将 gpg 密钥存储在 yubikey 上,yubikey 使用 PIN 码解锁,并且 PIN 码缓存设置由 pcscd 守护程序控制,该守护程序会覆盖 gpg-agent.conf 设置。