Intereting Posts
Zsh очистить командную строку от вызова zsh / sched Можно ли определить чувствительные к каталогу псевдонимы в zsh (или любой другой оболочке)? xrandr-опосредованная коррекция VGA overscan на внешнем мониторе компьютера Как установить разрешения, которые пользователи могут видеть (диски, папки) на opensuse 12.1? Удалить папку с пустым (?) Именем файла Вызов команды из скрипта не ожидает завершения предыдущей команды Вход в bash для Linux без использования «read» если условие в bash-скриптинге Захват файла журнала из нескольких сценариев Получить bash DEBUG trap для выполнения только один раз для и / или списков? Как получить имя столбца с определенной строкой? Заполнение вкладки не работает в клиенте командной строки MySQL стороннее программное обеспечение для аудита Linux Использование области SSD накопителя H-HDD с LVM / bcache Синтаксис формата Hexdump – цвет

gpg2 pinentry терпит неудачу без X

Что работает

Мой штырь для gpg-agent отлично работает под X. Я могу запускать

echo "test" | gpg2 -ase --default-recipient-self | gpg2 

для кэширования моих паролей и последующего запуска killall gpg-agent -1 для их очистки.

По умолчанию он открывает pinentry-gtk (из внешнего вида) и запрашивает мой пароль.

Что не работает

Однако, если я пытаюсь запустить ту же команду без X-сервера, похоже, что gpg2 висит (нет подсказки или чего-то еще). Если я его убью, то я вижу, что есть также pinentry процесс, который продолжает существовать, но нигде не полезен.

Что я ожидаю

Я ожидаю, что запуск gpg2 без сервера X даст мне подсказку с буферизацией, так же, как это делает pass . Кроме того, я, похоже, помню, что с более старой версией gpg это просто подсказало мне мой пароль из stdin, и я не совсем уверен, почему этого не происходит.

Что я пробовал

Я пробовал следующие «исправления», но никто из них не вызвал правильную выполнение вышеупомянутой команды. Фактически, форсирование булавки-проклятия приводит к тому, что вышеупомянутая команда терпит неудачу даже в среде X ( pass все еще работает).

  • Настройка pinentry-program /usr/bin/pinentry-curses в `gpg-agent.conf“

  • Запуск gpg-агента следующим образом: gpg-agent --daemon --keep-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses

  • используя переменную окружения: export PINENTRY_USER_DATA="USE_CURSES=1”

Справочная информация

У меня почти пустой файл конфигурации .gpg-agent; все, что у него есть, – тайм-ауты кеша.

Я вызываю gpg-agent непосредственно при входе, например eval $(gpg-agent --daemon) . Я не загружаюсь в X, поэтому я использую getty для входа в систему.

К сожалению … ответ был в первом man gpg-agent . Мне нужно было добавить следующие строки в мой ~ / .bashrc:

 GPG_TTY=$(tty) export GPG_TTY 

Неверное значение GPG_TTY объясняет, почему выполнялись операции pinentry-curses, но не там, где мне это нужно.

note: Поскольку вывод tty изменяется между tty в консоль и после запуска моего X-сервера, это нужно запускать на каждом ~ / .bashrc (тогда как большинство переменных среды экспорта экспортируются только при входе в систему).