GPG зависает при доступе к закрытым ключам

16

Мне нравится подписывать мои git коммиты с моим ключом PGP, поэтому я был очень встревожен, когда пошел, git commit -Sно вместо запроса моей ключевой фразы PGP, git просто начал зависать. Я не вносил изменений в настройки GPG в течение нескольких месяцев и с тех пор совершил много коммитов без проблем. Кроме того, когда я пытаюсь просмотреть свои закрытые ключи с помощью gpg -K, gpg зависает. Однако, когда я запускаю gpg -kпросмотр моих открытых ключей, он возвращает список как обычно. Надеюсь, кто-то будет иметь представление о том, что вызывает эту проблему и как ее исправить.

Джон Леуэнхаген
источник
ты делаешь это через ssh? если да, есть ли у вас gpg-agentили аналогичные настройки в .bashrc (и т. д.) удаленной системы, и настроены ли они для запроса на дисплее X удаленного компьютера или аналогичного? У меня были подобные проблемы в прошлом (например, ssh-ing с терминала на моем устройстве mythtv на мой настольный компьютер для запуска чего-либо, требующего gpg. Также были похожие проблемы с этим ssh-agent), и я с помощью brute-force «исправил» его export GPG_TTY=$(tty)в .bashrc, чтобы убедиться, что подсказка всегда находится на текущем tty. я не могу терпеть GUI passwd подсказки так или иначе.
Cas
1
Нет, я не делаю это по SSH. Странно то, что я обнаружил, что если я убью gpg-agent, gpg снова будет работать. Я пытаюсь выяснить, почему и принять долгосрочное решение.
Джон Леуэнхаген,
Я только что заметил на gpg-agentстранице руководства, что установка GPG_TTY, как указано выше, - это не то, что я взломал для работы, это требуется. На странице руководства написано, что вы всегда должны устанавливать это в своем .bashrc, как я, а также говорится, It is important that this environment variable always reflects the output of the tty command.что, должно быть, это было то, откуда я это взял. Еще одна вещь, о которой вы должны быть осторожны, это программа pinentry, используемая gpg-agent. У меня есть мое множество (в ~/.gnupg/gpg-agent.conf) к/usr/bin/pinentry-curses
саз

Ответы:

21

Я столкнулся с этой проблемой (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Команды, которые будут зависать:

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

Мое решение было таким же, как упомянуто Джоном выше (т. Е. Kill gpg-agent), так как большинство других методов how-can-i-restart-gpg-agent также зависали.

# Solution    
pkill -9 gpg-agent

Затем для подписи коммитов git я установил tty env, как указано выше в cas, а также в gpg-fail-to-sign-commit-object .

export GPG_TTY=$(tty)
CoffeeMonster
источник
Так нужно ли вам повторно убивать gpg при каждой перезагрузке? Это то, что я должен был сделать в течение долгого времени. Я надеюсь, что мы найдем способ исправить это навсегда.
Джон Лойенхаген,
Просто сам начал решать проблему. Убийство, gpg-agentкажется, единственный способ заставить его работать снова.
Алексис Тайлер