2

В MacOSX я использую gnupg21 , чтобы подписать git commit . В зависимости от проекта, в котором я сейчас работаю, иногда я использую IDE (здесь IntellijIDEA) для взаимодействия с git а иногда и непосредственно в terminal .

Я должен был настроить

pinentry-program /usr/local/bin/pinentry-mac

чтобы иметь возможность продолжить работу над IntellijIDEA .

Тем не менее, я не очень люблю подсказывать GUI, когда использую terminal . Как вы думаете, можно ли настроить gnupg21 для выбора программы пинентри в pinentry от ситуации?

  • На GUI -> /usr/local/bin/pinentry-mac
  • На терминале -> /usr/local/bin/pinentry

Изменить: мои текущие файлы конфигурации

GPG-agent.conf

enable-ssh-support
default-cache-ttl 14400
max-cache-ttl 86400
log-file /var/log/gpg-agent.log
pinentry-program /usr/local/bin/pinentry-mac

gpg.conf

keyserver hkp://keys.gnupg.net
no-tty
use-agent

2 ответа2

3

Запуск нескольких gpg-agent

gpg-agent GnuPG может быть настроен на использование разных сокетов до GnuPG 2.1; Вы могли бы использовать разные gpg-agent работающие параллельно, с разной конфигурацией (реализации pinentry).

С GnuPG 2.1 это больше не возможно. GnuPG начиная с 2.1 всегда использует фиксированный путь к сокету.

Пинентри Переключение

Единственная чистая возможность включить такую функцию - это, вероятно, написание реализации "коммутатора" pinentry, решая, какой фактический pinentry вызывать, в зависимости от того, вызывается ли он из командной строки или из GUI (например, в зависимости от того, какие переменные DISPLAY или tty установлены),

Loopback Pinentry Mode

Альтернативой может быть использование функции обратной связи, которая по умолчанию отключена в gpg-agent по соображениям безопасности. В кольцевом шлейфе Pinentry вместо парольного запроса на ввод пароля будет gpg-agent gpg для парольной фразы. Это потенциально открывает проблемы безопасности, поскольку довольно большое и сложное приложение GnuPG (с большей вероятностью уязвимостей) получает доступ к ключевой фразе и, следовательно, к закрытому ключу, который в противном случае был бы ограничен реализацией gpg-agent и pinentry.

В любом случае, добавьте строку allow-loopback-pinentry в ~/.gnupg/gpg-agent.conf , killall gpg-agent (чтобы он был перезапущен с включенной опцией в следующий раз, когда GnuPG захочет ее использовать). Если вы хотите использовать графический интерфейс пользователя, запустите GnuPG как обычно; для операций командной строки вместо этого вызовите gpg21 --pinentry-mode loopback (которая, конечно, может быть псевдонимом для gpg21).

2

Извините за поздний ответ, но у меня возник тот же вопрос, и я нашел решение, которое кажется более чистым, чем изменение конфигурации pinentry-program и перезапуск gpg-agent каждый раз.

Хотя это и не задокументировано нигде за пределами источника, pinentry-mac будет использовать метод ввода контактов CLI curses, если для переменной среды PINENTRY_USER_DATA задано значение USE_CURSES=1 . Вы можете оставить pinentry-mac по умолчанию в вашем gpg-agent.conf и шлепать:

export PINENTRY_USER_DATA="USE_CURSES=1"

в вашем профиле Bash или эквивалент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .