在 git 调用中不请求 gpg-agent

The*_*ten 9 git gnupg

在 git commits (gpg) 中,git命令总是在gpg-agent运行时询问密码。

我启动GPG代理

$ eval `gpg-agent -s --enable-ssh-support --daemon --write-env-file $HOME/.gpg-agent-info`
Run Code Online (Sandbox Code Playgroud)

然后我打开另一个终端并检查它是否正在运行:

$ cat ~/.gpg-agent-info
GPG_AGENT_INFO=/tmp/gpg-w2HH4r/S.gpg-agent:28539:1
SSH_AUTH_SOCK=/tmp/gpg-QQTJCD/S.gpg-agent.ssh
SSH_AGENT_PID=28539
$ ps -u $USER | grep gpg-agent
28539 ?        00:00:00 gpg-agent
$ echo $GPG_AGENT_INFO $SSH_AUTH_SOCK $SSH_AGENT_PID
/tmp/gpg-w2HH4r/S.gpg-agent:28539:1 /tmp/gpg-QQTJCD/S.gpg-agent.ssh 28539
$ echo test | gpg-aes -t D2FA51BD --use-agent | gpg --use-agent
....
test
....
Run Code Online (Sandbox Code Playgroud)

第一个“ .... ”说,这是需要一个密码和GPG代理launchs的pinentry-GTK-2 。最后一个 ' .... ' 表示gpg正在使用密钥 ID 进行签名。

再次运行相同的命令不会要求输入密码

.

但是在运行 git 时,gpg 会在命令行中要求输入密码,而不是带有 pinentry 的 gpg-agent

$ echo test >> test.txt ; git add test.txt ; git commit -S -m "test"
....
(intro passphrase)
....
Run Code Online (Sandbox Code Playgroud)

再次运行(又一次......)相同的命令总是要求输入密码(到相同的密钥 ID)。

我的.gitconfig只设置了用户名电子邮件。两个命令(gpggit)都要求提供相同的密钥 ID。使用--use-agent调用gpg工作正常(没有它不行),但git没有传递给gpg 的选项(只有.gitconfig 中的用户配置值);和环境是正确的。

使用调试级别 8记录gpg-agent仅显示使用gpg命令的活动,但不显示使用git 的活动

我正在使用gnupg 1.4.12gpg-agent 2.0.19(Debian Wheezy 稳定版,官方存储库)。我从 github repo 克隆了 git,在本地编译并安装了当前版本(2.3.0.rc1.30.g76afe74),结果相同。

我检查了我的配置,但我不知道这是什么类型的问题。有什么建议吗?

谢谢

The*_*ten 10

傻我...在gpg.conf 中设置选项use-agent解决了这个问题。

Git不会检查gpg-agent是否正在运行,并且需要使用选项--use-agent调用gpg

我必须更改我的默认 GPG 行为(选项)...并在其他情况下使用--no-use-agent

  • 我的 conf 文件上有 use-agent 但它仍然没有被 git 命令调用。 (2认同)