git 呼叫中未請求 gpg-agent

git 呼叫中未請求 gpg-agent

在 git 提交(gpg)中,git命令總是要求輸入密碼gpg-代理在跑。

我發射gpg-代理

$ eval `gpg-agent -s --enable-ssh-support --daemon --write-env-file $HOME/.gpg-agent-info`

然後我打開另一個終端並檢查它是否正在運行:

$ 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
....

首先 '....' 說它需要一個密碼並且gpg-代理發射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)
....

再次運行(一次又一次...)相同的命令總是要求輸入密碼(相同的密鑰 ID)。

我的.gitconfig僅設定了使用者名稱電子郵件。兩個命令(GPGgit) 要求相同的金鑰 ID。呼喚GPG--使用代理工作正常(沒有它則不行),但是git沒有選項可以傳遞給GPG(僅用戶配置值.gitconfig);且環境是正確的。

記錄gpg-代理調試等級 8僅顯示活動GPG命令,但沒有任何內容git

我在用著gnupg 1.4.12gpg-代理 2.0.19(Debian Wheezy 穩定版,官方倉庫)。我從 github 儲存庫克隆了 git,在本地編譯並安裝了當前版本(2.3.0.rc1.30.g76afe74),結果相同。

我檢查了我的配置,但我不知道這是什麼類型的問題。有什麼建議嗎?

謝謝

答案1

我傻了...設定選項使用代理gpg設定檔解決了這個問題。

git不檢查是否gpg-代理正在運行並且GPG需要使用選項來調用--使用代理

我必須更改我的預設 GPG 行為(選項)...並使用--不使用代理在其他場景中。

相關內容