在 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僅設定了使用者名稱和電子郵件。兩個命令(GPG和git) 要求相同的金鑰 ID。呼喚GPG和--使用代理工作正常(沒有它則不行),但是git沒有選項可以傳遞給GPG(僅用戶配置值.gitconfig);且環境是正確的。
記錄gpg-代理和調試等級 8僅顯示活動GPG命令,但沒有任何內容git。
我在用著gnupg 1.4.12和gpg-代理 2.0.19(Debian Wheezy 穩定版,官方倉庫)。我從 github 儲存庫克隆了 git,在本地編譯並安裝了當前版本(2.3.0.rc1.30.g76afe74),結果相同。
我檢查了我的配置,但我不知道這是什麼類型的問題。有什麼建議嗎?
謝謝
答案1
我傻了...設定選項使用代理在gpg設定檔解決了這個問題。
git不檢查是否gpg-代理正在運行並且GPG需要使用選項來調用--使用代理。
我必須更改我的預設 GPG 行為(選項)...並使用--不使用代理在其他場景中。