Использование GnuPG и его демона gpg-agent

9

Я использую, gpg-agentчтобы запомнить и предоставить свой GnuPGпароль при сборке Debian/Ubuntuпакетов. Но я все еще не понимаю, как gpg-agentработает. Я призываю gpg-agentкак:

eval $(gpg-agent --daemon)

Иногда работает Но меня беспокоит то, что иногда это не работает. То есть иногда процесс сборки запрашивает мои GnuPGпароли один раз, иногда нет, а иногда много раз. Все это происходит во время одной сессии bash, после того как я вызвал ее, gpg-agentкак и раньше. В этот раз отсутствие запроса пароля не гарантирует, что в следующий раз мне не будет предложено ввести пароль. Я до сих пор не понимаю, почему gpgрешает запросить у меня пароль, а почему нет.

Это случается и с тобой?

Спасибо

XPT
источник
1
Вам нужно будет потратить некоторое время, чтобы попытаться выяснить, при каких обстоятельствах он терпит неудачу и при каких обстоятельствах это удается. Если вы можете описать, что надежно связано с ошибкой, тогда кто-то другой, скорее всего, придет к решению.
bignose
В Emacs для GNUS и .authinfo.gpgя получил подсказку для использования gpg2, что gpg-agentсвязано с. Так (setq epg-gpg-program "/usr/bin/gpg2")сработало для меня. Возможно, вам придется выяснить, какие из ваших приложений имеют проблему, они могут предпочитать gpg(1).
Брейди Трейнор,

Ответы:

7

Нашел, как правильно использовать gpg-agentот http://tr.opensuse.org/SDB:Using_gpg-agent

После этого мой gpg-agentдемон GnuPGтеперь правильно кэширует мои пароли. В моей настройке не было ничего плохого, просто я не знал, как проверить, правильно ли GnuPGкэшируются мои пароли или нет.

Теперь я делаю:

echo "test" | gpg -ase -r 0xMYKEYID | gpg

С сайта: «Замените 0xMYKEYID вашим идентификатором ключа GnuPG. При выполнении этой команды агент должен дважды открыть диалоговое окно с графическим паролем: сначала для подписи или шифрования (gpg -ase) (gpg -ase), а затем для расшифровки или проверки подписи ( | gpg). С этого момента каждый раз, когда используется GnuPG (из командной строки или встроенная в графическую программу, такую ​​как KMail), пароль gpg-agent будет передаваться автоматически (до истечения времени ожидания или до графического интерфейса. закрыто)."

И чтобы избежать истечения срока действия кэширования, я установил очень большой период ожидания:

$ cat ~/.gnupg/gpg-agent.conf
max-cache-ttl 60480000
default-cache-ttl 60480000
XPT
источник
Согласно linux.die.net/man/1/gpg-agent , вы также можете добавить --write-env-file "${HOME}/.gpg-agent-info"при запуске gpg-agent, а затем добавить его if [ -f "${HOME}/.gpg-agent-info" ]; then . "${HOME}/.gpg-agent-info"; export GPG_AGENT_INFO fi в .bashrc, чтобы определить, запущен ли агент. Похоже, немного чище решение.
Шон Боб
@ SeantheBean, отлично. Я проверю это и вернусь к вам ...
xpt
WARNING: "--write-env-file" is an obsolete option - it has no effectпо крайней мере Apr 4 '16. Ссылка: serverfault.com/a/481174
xpt