GnuPG pinentry в зависимости от наличия GUI
На 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 ответа
Запуск нескольких gpg-agent
s
GnuPG-х gpg-agent
может быть настроен на использование разных сокетов до GnuPG 2.1; Вы могли бы использовать разные gpg-agent
работает параллельно с другой конфигурацией (реализациями).
С GnuPG 2.1 это больше не возможно. GnuPG начиная с 2.1 всегда использует фиксированный путь к сокету.
Пинентри Переключение
Единственная чистая возможность включить такую функцию - это, вероятно, написать реализацию коммутатора пинентри, решив, какой фактический пинентри вызывать в зависимости от того, вызывается ли из командной строки или из графического интерфейса пользователя (например, в зависимости от того, что DISPLAY
или же tty
переменные установлены).
Loopback Pinentry Mode
Альтернативой может быть использование функции обратной связи, которая отключена в gpg-agent
по умолчанию в целях безопасности. Петлевая петля будет иметь gpg-agent
запрос gpg
для ключевой фразы вместо запроса пароля для внешнего ввода. Это потенциально открывает проблемы безопасности, поскольку довольно большое и сложное приложение GnuPG (с большей вероятностью уязвимостей) получает доступ к ключевой фразе и, следовательно, к закрытому ключу, который в противном случае был бы ограничен gpg-agent
и введение в практику.
В любом случае, добавьте строку allow-loopback-pinentry
в ~/.gnupg/gpg-agent.conf
, killall gpg-agent
(поэтому он перезапускается с включенной опцией в следующий раз, когда GnuPG захочет его использовать). Если вы хотите использовать графический интерфейс пользователя, запустите GnuPG как обычно; для операций командной строки, позвоните gpg21 --pinentry-mode loopback
вместо этого (который, конечно, может быть псевдонимом для gpg21
).
Извините за поздний ответ, но у меня был тот же вопрос, и я нашел решение, которое кажется чище, чем изменение pinentry-program
настройка и перезапуск gpg-agent каждый раз.
Хотя это не задокументировано нигде, кроме источника, pinentry-mac
будет возвращаться к методу ввода ПИН curses, если PINENTRY_USER_DATA
переменная окружения установлена в USE_CURSES=1
, Вы можете оставить pinentry-mac по умолчанию в вашем gpg-agent.conf и шлепать:
export PINENTRY_USER_DATA="USE_CURSES=1"
в вашем профиле Bash или эквивалент.