Я только что понял, как использовать gpg-agent
на моем Mac сегодня. Я был заблокирован после такой же ошибки, как вы:
gpg: problem with the agent - disabling agent use
tldr; Как я его исправил
Для моей установки я смог исправить это, установив pinentry-mac
и указав gpg-agent
, чтобы использовать его, тем самым вызывая приглашение GUI по мере необходимости.
1. install pinentry-mac
% brew install pinentry-mac
2. update gpg-agent conf
# manually change ~/.gnupg/gpg-agent.conf's pinentry-program to /usr/local/bin/pinentry-mac
3. update shell's view of PATH contents
% hash -r
4. restart gpg-agent
# however you normally do it (see below for how I run it manually)
Подробная информация по отладке
Я отлажена это путем перезагрузки gpg-agent
вручную. Я первый закомментирована конфиги в ~/.gnupg/gpg-agent.conf
, то я запустил эту команду, чтобы перезапустить GPG-агент с --verbose
:
% killall gpg-agent && \
eval $(gpg-agent --pinentry-program /usr/local/bin/pinentry --default-cache-ttl 60 --daemon --verbose)
Затем я запустил тестовую команду и увидели ошибку, мы оба перечисленных выше, а также новый:
# update the MY_GPG_KEY_ID as appropriate
% echo hi | gpg -e -r $(MY_GPG_KEY_ID) | gpg -d --use-agent
...
gpg-agent[60604]: command get_passphrase failed: Device not configured
gpg: problem with the agent - disabling agent use
...
в конце концов я понял (после прочтения this article и this GPG page), который было GPG_TTY
не установленных шагами я следующие для запуска gpg-agent
. Поэтому, как только я установил, что переменная все «работает»:
% killall gpg-agent && \
eval $(gpg-agent --pinentry-program /usr/local/bin/pinentry --default-cache-ttl 60 --daemon --verbose)
% export GPG_TTY=`tty`
# Now the below command succeeds
% echo hi | gpg -e -r $(MY_GPG_KEY_ID) | gpg -d --use-agent
В разгар этого упражнения я пытался много различных вариантов, и обнаружил, что pinentry-mac
GUI суфлер «просто работал».
избежать GUI ключевой фразы суфлер
Если вы не хотите GUI суфлер выскакивает, то я думаю, что было бы достаточно для того, чтобы следующая переменной Env Создаются в каждом терминале:
GPG_TTY
- например, вы можете поместить эту строку в свою.Bashrc:
export GPG_TTY=$(tty)
GPG_AGENT_INFO
Я забыл упомянуть, что я использую Ubuntu. : sweat_smile: Позвольте мне посмотреть, могу ли я применить ваши исследования к моей проблеме. –
Решение моей проблемы, по-видимому, было проще. Согласно [этому руководству] (https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html), я должен указать GPG, который TTY я использую, как только это было сделано, все отлично работало , Если вы измените свой ответ, чтобы отразить это, я могу принять ваш ответ. –
@ cj-duncan Я подробно рассказал о настройке 'GPT_TTY' в вашем' .bashrc' (я понятия не имею, как «@» вы с пространством в вашем имени пользователя :)) –