缓存 GPG 密码以在 Mac 上进行 git 签名

Posted

技术标签:

【中文标题】缓存 GPG 密码以在 Mac 上进行 git 签名【英文标题】:Cache GPG passphrase for git signing on Mac 【发布时间】:2020-11-11 14:57:06 【问题描述】:

已经有一个更通用的主题Remember GPG password when signing git commits,但那里的答案对我不起作用。我的环境是:

Mac (macOS@10.15.7) Bash(macOS 自带的默认) Git v2.27.0 GnuPG v2.2.20 (libgcrypt 1.8.5)

我通过 Homebrew 安装了 GnuPG,并将以下设置写入 ~/.gnupg/gpg-agent.conf 文件:

default-cache-ttl 1209600 # 14 days
max-cache-ttl 31536000 # 1 year

但未应用缓存。在我执行git commit 后每隔十分钟左右,gpg 就会提示我再次输入密码。

这是我的全局.gitignore 文件:

[commit]
    gpgSign = true

我错过了什么?

【问题讨论】:

它只会在gpg-agent 运行时保存密码。如果您不想在代理停止后输入密码,请不要使用密码。 谢谢@dan1st - 你知道我怎样才能让gpg-agent 与 Bash 会话一起开始吗? 添加到.bashrc 【参考方案1】:

在我的个人设置中,我已将签名密钥添加到用户部分。

[user]
name = "Marco Franssen"
email = "marco@my-email.com"
signingkey = 63B0C3B53E26....

[commit]
gpgSign = true

此外,我在 oh-my-zsh 中有以下插件。 (~/.zshrc)

plugins=(git keychain gpg-agent)

zstyle :omz:plugins:keychain agents ssh,gpg
zstyle :omz:plugins:keychain identities id_rsa 63B0C3B53E2....

这个插件为我的 ssh 和 gpg 密钥启动一个代理。

另外我添加了以下文件

$ cat ~/.gnupg/gpg-agent.conf
default-cache-ttl 3600

对于 Bash,您可以将以下内容添加到您的 ~/.bashrc

https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/gpg-agent/gpg-agent.plugin.zsh

【讨论】:

感谢您的回答,马可!我更新了问题正文以指定我正在使用的 shell。你知道在 Bash 中 plugins=(git keychain gpg-agent) 的等价物是什么吗? @PaulRazvanBerg 我已经更新了插件添加的脚本的链接。您应该可以将其添加到您的 ~/.bashrc。

以上是关于缓存 GPG 密码以在 Mac 上进行 git 签名的主要内容,如果未能解决你的问题,请参考以下文章

GPG 签署所有没有存储的 git 提交

Mac上的git - gpg:错误:gpg无法签署数据

对于使用 WSL2 进行签名的 git 提交,Windows 10 上的 Visual Studio Code 中没有 GPG 密码提示

git 配置 GPG 秘钥

如何提供分类器以在 Tensorflow 上进行训练

Prometheus 查询 promql 以在同一字段上进行平均