6

В git commitits (gpg) команда git всегда запрашивает фразу-пароль во время работы gpg-agent .

Я запускаю gpg-agent с

$ 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-agent запускает pinentry-gtk-2. Последнее « .... » говорит, что gpg подписывается с помощью ключа ID.

При повторном запуске та же команда не запрашивает пароль

,

Но при запуске git gpg запрашивает фразу-пароль в командной строке, а не gpg-agent с pinentry:

$ echo test >> test.txt ; git add test.txt ; git commit -S -m "test"
....
(intro passphrase)
....

При повторном запуске (и снова ...) одна и та же команда всегда запрашивает пароль (с тем же идентификатором ключа).

Мой .gitconfig только установил имя пользователя и адрес электронной почты. Обе команды (gpg и git) запрашивают одинаковый идентификатор ключа. Вызов gpg с --use-agent работает нормально (без него нет), но git не имеет параметров для передачи в gpg (только пользовательские значения конфигурации в .gitconfig); и среда правильная.

Ведение журнала gpg-agent с уровнем отладки 8 показывает активность только с командой gpg , но ничего с git.

Я использую gnupg 1.4.12 и gpg-agent 2.0.19 (стабильная версия Debian Wheezy, официальные репозитории). Я клонировал git из репозитория github, скомпилировал и установил локально текущую версию (2.3.0.rc1.30.g76afe74) с теми же результатами.

Я проверил свои конфиги, но я не знаю, что это за проблема. Любое предложение?

Спасибо

1 ответ1

8

Дурак я... Установка опции use-agent в gpg.conf решает проблему.

Git не проверяет, работает ли gpg-agent и нужно ли вызывать gpg с опцией --use-agent.

Я должен изменить свое поведение GPG по умолчанию (параметры)... и использовать --no-use-agent в других сценариях.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .