Używanie GnuPG i jego demona gpg-agent

9

Używam gpg-agentdo zapamiętywania i podawania GnuPGhasła podczas budowania Debian/Ubuntupakietów. Ale nadal jestem zdezorientowany, jak to gpg-agentdziała. Wzywam gpg-agentjako:

eval $(gpg-agent --daemon)

Czasami to działa. Ale przeszkadza mi to, że czasami to nie działa. Tj. Czasami proces budowania prosi o moje GnuPGhasło raz, czasem nie, a czasem wiele razy. Wszystko to dzieje się podczas jednej sesji bash po tym, gpg-agentjak wywołałem jak poprzednio. Tym razem brak prośby o podanie hasła nie gwarantuje, że następnym razem nie otrzymam hasła. Nadal nie wiem, dlaczego gpgdecyduje się poprosić mnie o hasło, a dlaczego tak nie jest.

Czy ci się też zdarza?

Dzięki

xpt
źródło
1
Będziesz musiał poświęcić trochę czasu, aby określić, w jakich okolicznościach zawodzi i w jakich okolicznościach się udaje. Jeśli potrafisz opisać, co jest rzetelnie skorelowane z niepowodzeniem, wtedy ktoś inny prawdopodobnie pomyśli o rozwiązaniu.
bignose
W Emacsie, dla GNUS i .authinfo.gpgdostałem podpowiedź do użycia gpg2, z którą gpg-agentjest związany. Tak (setq epg-gpg-program "/usr/bin/gpg2")mi działało. Być może będziesz musiał dowiedzieć się, które aplikacje mają problem, być może wolą gpg(1).
Brady Trainor,

Odpowiedzi:

7

Dowiedz się, jak prawidłowo korzystać gpg-agentz http://tr.opensuse.org/SDB:Using_gpg-agent

Następnie mój gpg-agentdemon GnuPGprawidłowo buforuje moje hasła. W mojej konfiguracji nie było nic złego, po prostu nie wiedziałem, jak sprawdzić, czy moje GnuPGhasła są buforowane poprawnie, czy nie.

Teraz ja robię:

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

Ze strony: „Zamień 0xMYKEYID na identyfikator klucza GnuPG. Podczas uruchamiania tego polecenia agent powinien otworzyć graficzne okno dialogowe hasła dwukrotnie: najpierw do podpisania lub szyfrowania (gpg -ase) (gpg -ase), a następnie do odszyfrowania lub sprawdzenia podpisu ( | gpg) Odtąd za każdym razem, gdy GnuPG jest używany (z poziomu wiersza poleceń lub osadzony w programie graficznym, takim jak KMail), hasło gpg-agenta będzie przekazywane automatycznie (aż do upływu limitu czasu lub interfejsu graficznego zostanie Zamknięte)."

Aby uniknąć wygaśnięcia buforowania, ustawiłem teraz bardzo długi limit czasu:

$ cat ~/.gnupg/gpg-agent.conf
max-cache-ttl 60480000
default-cache-ttl 60480000
xpt
źródło
Zgodnie z linux.die.net/man/1/gpg-agent , możesz również dodać --write-env-file "${HOME}/.gpg-agent-info"podczas uruchamiania gpg-agent, a następnie dodać if [ -f "${HOME}/.gpg-agent-info" ]; then . "${HOME}/.gpg-agent-info"; export GPG_AGENT_INFO fi do .bashrc, aby sprawdzić, czy agent jest już uruchomiony. Wydaje się, że jest to nieco czystsze rozwiązanie.
Sean the Bean
@SeantheBean, doskonale. Przetestuję to i skontaktuję się z tobą ...
xpt.
WARNING: "--write-env-file" is an obsolete option - it has no effectprzynajmniej odtąd Apr 4 '16. Patrz: serverfault.com/a/481174
xpt