在Mac上为Git签名缓存GPG密码

问题描述

关于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

我想念什么?

解决方法

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

[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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...