GPG zawiesza się po uzyskaniu dostępu do kluczy prywatnych


16

Lubię podpisywać moje polecenia git za pomocą mojego klucza PGP, więc byłem dość zaniepokojony, gdy poszedłem do, git commit -Sale zamiast pytać o hasło do klucza PGP, git właśnie zaczął się zawieszać. Nie zmieniłem konfiguracji GPG od kilku miesięcy i od tego czasu dokonałem wielu zmian bez żadnego problemu. Dodatkowo, gdy próbuję wyświetlić moje klucze prywatne gpg -K, gpg zawiesza się. Jednak po uruchomieniu, gpg -kaby wyświetlić moje klucze publiczne, zwraca listę jak zwykle. Mam nadzieję, że ktoś zorientuje się, co powoduje ten problem i jak go naprawić.


robisz to przez ssh? jeśli tak, to czy masz gpg-agentpodobną konfigurację w .bashrc (itp.) systemu zdalnego i skonfigurowano wyświetlanie monitu na ekranie X pilota lub podobnym? Miałem podobne problemy w przeszłości (np. ssh-sing z terminala na moim urządzeniu mythtv do mojego komputera stacjonarnego, aby uruchomić coś wymagającego gpg. miałem również podobne problemy z ssh-agent) i brute-force „naprawił” to export GPG_TTY=$(tty)w .bashrc, aby upewnić się, że monit jest zawsze na bieżącym tty. i tak nie mogę znieść monitów o podanie hasła GUI.
cas

1
Nie, nie robię tego przez SSH. Dziwne jest to, że odkryłem, że jeśli zabiję gpg-agent, gpg znów działa. Próbuję dowiedzieć się, dlaczego i stworzyć długoterminowe rozwiązanie.
John Leuenhagen

Właśnie zauważyłem na gpg-agentstronie podręcznika, że ​​ustawienie GPG_TTY jak wyżej nie jest czymś, co zhackowałem do pracy, jest wymagane. Strona podręcznika mówi, że zawsze powinieneś ustawiać go w swoim .bashrc tak jak ja, a także mówi It is important that this environment variable always reflects the output of the tty command.- to musiało być miejsce, z którego go otrzymałem. Kolejną rzeczą, na którą musisz uważać, jest program pinentry używany przez gpg-agent. Moje ustawiłem (w ~/.gnupg/gpg-agent.conf) na/usr/bin/pinentry-curses
cas

Odpowiedzi:


21

Natrafiłem na ten konkretny problem (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Polecenia, które by się zawiesiły:

gpg -K # --list-secret-keys
gpg -d # --decrypt
gpg --edit-key
gpgconf --kill gpg-agent

Moje rozwiązanie było takie samo, jak wspomniane powyżej przez Johna (tj. Zabić gpg-agent), ponieważ większość innych metod na how-can-i-restart-gpg-agent również się zawiesił.

# Solution    
pkill -9 gpg-agent

Następnie do podpisywania zatwierdzeń git ustawiłem tty env, jak wspomniano powyżej przez cas, a także na gpg-failed-to-sign-commit-object .

export GPG_TTY=$(tty)

Więc musisz zabijać gpg za każdym razem, gdy restartujesz? To właśnie robiłem od dłuższego czasu. Mam nadzieję, że znajdziemy sposób, aby to naprawić na dobre.
John Leuenhagen

Właśnie zacząłem sam mieć problem. gpg-agentWydaje się, że zabicie tego jest jedynym sposobem na jego ponowne uruchomienie.
Alexis Tyler
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.