如何配置Git与GPG,从CLI密码管理器自动获取提交签名口令?
配置Git提交自动签名并从密码管理器获取GPG口令
核心思路
GPG通过*pinentry*程序获取私钥口令,我们可以替换默认的*pinentry*为自定义脚本,让脚本调用密码管理器的CLI接口自动提取口令,避免手动输入。
步骤详解
1. 创建自定义pinentry脚本
在用户目录下创建一个可执行脚本,比如~/.gnupg/pinentry-passmanager(文件名可自定义),内容如下(根据你的密码管理器CLI调整):
#!/bin/bash # 替换为你的密码管理器CLI命令,示例为1Password CLI PASSWORD=$(op item get "GPG私钥口令" --field password) # Bitwarden CLI示例:PASSWORD=$(bw get password "GPG私钥") echo "$PASSWORD"
注意:不同密码管理器的CLI语法差异较大,请根据实际工具的文档修改获取口令的命令。
2. 给脚本添加执行权限
运行命令赋予脚本可执行权限:
chmod +x ~/.gnupg/pinentry-passmanager
3. 配置GPG Agent使用自定义脚本
编辑~/.gnupg/gpg-agent.conf文件(不存在则新建),添加或修改以下配置:
pinentry-program /home/你的用户名/.gnupg/pinentry-passmanager # 可选:设置口令缓存时长,单位为秒,示例为1小时 default-cache-ttl 3600 max-cache-ttl 3600
4. 重启GPG Agent使配置生效
执行命令重启GPG Agent:
gpg-connect-agent reloadagent /bye
5. 验证配置有效性
发起一次带签名的Git提交测试:
git commit -S -m "测试自动签名提交"
若配置正确,提交会自动完成签名,无需手动输入口令。
关键注意事项
- 确保密码管理器的CLI已完成登录并保持会话有效,部分工具支持配置持久化会话,可参考对应文档设置。
- 不同操作系统的路径格式不同:macOS用户目录为
/Users/你的用户名,Windows则为C:\Users\你的用户名,需对应调整脚本路径。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

