You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
      如果没有这一行,直接添加进去就行。
  • 再次重启gpg-agent让配置生效:
gpgconf --kill gpg-agent

验证设置是否生效

完成上面的步骤后,你可以做个测试:

  1. 打开一个GPG文件,输入密码解密;
  2. 等待你设置的缓存时长(比如1分钟);
  3. 再打开另一个GPG文件,此时应该会弹出pinentry-mac的窗口要求你输入密码——这就说明配置生效了。

备注:内容来源于stack exchange,提问作者ecjb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:05:26