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.