Windows系统下gpg-agent安装及GPG密钥密码缓存配置求助
解决Windows下Git提交签名重复输入GPG密钥密码的问题
我明白你现在的困扰——配置了Git提交签名后每次都要输密钥密码,明明装了Gpg4win、gpg-agent也在运行,但就是不缓存密码。我之前在Windows 10上也遇到过类似问题,给你一步步梳理解决办法:
首先先确认你的问题场景:你已经通过Keybase创建并同步了GPG密钥,执行提交时会弹出密码提示:
PS> git commit -m "testing" --allow-empty You need a passphrase to unlock the secret key for user: "keybase.io/anthonymastrean <anthonymastrean@keybase.io>" 2048-bit RSA key, ID AD9184C0, created 2015-04-14 (main key ID 293FEB8B) Enter passphrase:
gpg-agent确实在运行,但缓存功能没生效,而且对着gpg-connect-agent的一堆命令不知道怎么下手。
具体解决步骤
1. 配置gpg-agent的缓存规则
首先要给gpg-agent设置缓存时长,这需要修改它的配置文件:
- 在Windows上,gpg-agent的配置文件路径是
%APPDATA%\gnupg\gpg-agent.conf,如果这个文件不存在,直接新建一个。 - 打开文件后添加以下内容:
default-cache-ttl 3600 # 默认缓存1小时(单位:秒) max-cache-ttl 86400 # 最长缓存24小时,超过这个时间需要重新输入 - 保存后,重启gpg-agent让配置生效:
gpg-connect-agent reloadagent /bye
2. 确保Git关联正确的GPG程序
有时候Git可能没指向Gpg4win自带的gpg.exe,导致无法调用gpg-agent。执行以下命令设置全局GPG程序路径:
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
如果你的Gpg4win装在其他路径,替换成对应的路径即可。
3. 让gpg-agent随Windows自动启动
为了避免每次打开终端都要手动启动gpg-agent,可以把它加入开机启动项:
- 按下
Win + R,输入shell:startup打开系统启动文件夹。 - 在里面新建一个批处理文件(比如
start-gpg-agent.bat),写入以下内容:@echo off set GPG_AGENT_INFO= start "" "C:\Program Files (x86)\GnuPG\bin\gpg-agent.exe" --daemon - 保存后,下次开机或打开终端时gpg-agent就会自动运行了。
4. 验证配置效果
现在执行两次测试提交,第一次输入密码后,第二次应该不需要再输入:
git commit -m "test gpg cache" --allow-empty git commit -m "test cache again" --allow-empty
如果第二次没有弹出密码提示,说明缓存已经生效了。
另外,关于你提到的gpg-connect-agent,一般日常使用不需要直接调用它的复杂命令,除非你需要手动管理缓存密码(比如预设密码,但这有安全风险,不推荐)。如果真的需要,你可以先通过gpg --with-keygrip -K anthonymastrean@keybase.io获取密钥的Keygrip,再用PRESET_PASSPHRASE命令预设,但还是建议用上面的缓存配置更安全。
内容的提问来源于stack exchange,提问作者Anthony Mastrean
相关产品推荐
相关产品推荐

