Lubię podpisywać moje polecenia git za pomocą mojego klucza PGP, więc byłem dość zaniepokojony, gdy poszedłem do, git commit -S
ale 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 -k
aby wyświetlić moje klucze publiczne, zwraca listę jak zwykle. Mam nadzieję, że ktoś zorientuje się, co powoduje ten problem i jak go naprawić.
16
gpg-agent
podobną 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 zssh-agent
) i brute-force „naprawił” toexport 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.gpg-agent
stronie 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ówiIt 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
Odpowiedzi:
Natrafiłem na ten konkretny problem (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)
Polecenia, które by się zawiesiły:
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ł.
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 .
źródło
gpg-agent
Wydaje się, że zabicie tego jest jedynym sposobem na jego ponowne uruchomienie.