pinentry-mac导致GPG不再持续要求输入密码的安全漏洞问题求助
pinentry-mac导致GPG不再持续要求输入密码的安全漏洞问题求助
我完全理解你现在的顾虑——这种输入一次密码后就长期免验证的情况确实存在不小的安全风险,尤其是在你的Mac可能被他人接触时。咱们一步步来解决这个问题,同时顺便把之前的gpg-agent启动错误也彻底搞定:
一、修正gpg-agent的缓存时长配置
你之前的gpg-agent.conf里设置了max-cache-ttl 0,这其实是让gpg-agent永久缓存你的密码,这就是输入一次后再也不用验证的核心原因之一。咱们把缓存时长改成你需要的短时间:
- 打开你的gpg-agent配置文件(路径是
~/.gnupg/gpg-agent.conf),把内容修改成:
default-cache-ttl 60 max-cache-ttl 60 pinentry-program /usr/local/bin/pinentry-mac default-key 1234**************************
default-cache-ttl 60:普通操作的密码缓存时长设为60秒(1分钟)max-cache-ttl 60:最长缓存时长也设为60秒,避免特殊操作延长缓存时间- 保留你原来的
default-key配置,确保agent能找到你的密钥
如果你希望每次打开GPG文件都必须输入密码(哪怕刚输完几秒),可以把两个值都改成1,这样缓存1秒后就会失效。
- 不用重启电脑,直接在终端输入命令重启gpg-agent,让新配置生效:
gpgconf --kill gpg-agent
下次使用GPG解密时,agent会自动加载新的配置。
二、禁止pinentry-mac把密码存在系统钥匙串
pinentry-mac默认会把密码存在Mac的Keychain里,这也是你重启电脑前都不用输密码的原因——哪怕gpg-agent缓存失效了,它会直接从Keychain取密码。咱们关掉这个选项:
- 先触发一次GPG解密操作(比如打开一个GPG文件),让pinentry-mac的窗口弹出来;
- 点击屏幕顶部菜单栏的pinentry图标(看起来像一把小钥匙),选择「Preferences」;
- 在弹出的偏好设置窗口里,取消勾选「Store in Keychain」选项,关闭窗口即可。
如果找不到菜单栏的图标,也可以直接在终端输入命令打开pinentry-mac的设置:
open /usr/local/bin/pinentry-mac
三、彻底解决之前的gpg-agent启动错误
你之前遇到的No agent running错误,大概率是MacPorts安装的GPG和Homebrew安装的pinentry路径冲突导致的。咱们统一用Homebrew的GPG组件:
- 打开
~/.gnupg/gpg.conf文件,检查有没有agent-program这一行,如果有,把它改成对应芯片的Homebrew路径:- Intel芯片Mac:
agent-program /usr/local/bin/gpg-agent - Apple Silicon芯片Mac:
agent-program /opt/homebrew/bin/gpg-agent
如果没有这一行,直接添加进去就行。
- Intel芯片Mac:
- 再次重启gpg-agent让配置生效:
gpgconf --kill gpg-agent
验证设置是否生效
完成上面的步骤后,你可以做个测试:
- 打开一个GPG文件,输入密码解密;
- 等待你设置的缓存时长(比如1分钟);
- 再打开另一个GPG文件,此时应该会弹出pinentry-mac的窗口要求你输入密码——这就说明配置生效了。
备注:内容来源于stack exchange,提问作者ecjb
相关产品推荐
相关产品推荐

