Использование gpg из консольной среды, такой как сеансы ssh, завершается неудачно, потому что диалог сеанса GTK не может быть показан в сеансе SSH.
Я пытался, unset DISPLAY
но это не помогло. Опции командной строки GPG не включают в себя переключатель для принудительного ввода ввода в консольный режим.
В старых версиях GPG предлагалось текстовое приглашение, которое отлично работало в сеансах SSH, но после обновления оно просто не удавалось.
Есть --textmode
переключатель командной строки, но, видимо, он делает что-то еще.
Каков был бы правильный и чистый способ получения ввода пин-кода в виде простого текста для удаленных сеансов?
DISPLAY="" gpg2 ...
мне помогли, я тоже заранее установил pinentry-curses + pinentry-tty, не уверен, если они строго необходимыОтветы:
Чтобы навсегда изменить пинентри, добавьте следующее к вашему
~/.gnupg/gpg-agent.conf
:(В более старых версиях, где отсутствует pinentry-tty, используйте pinentry-curses для диалогового окна «полный терминал».)
Скажите агенту GPG для перезагрузки конфигурации:
источник
gpg-agent
должен сам обнаружить наличие или отсутствие$DISPLAY
и выбрать подходящую пинентри ...DISPLAY
определенного не обязательно означает, что я могу или хочу использовать его, например, при подключении через SSH.su
это не меняет владельца вашего TTY, поэтому вам нужно сделатьchown
это вручную . Смотрите эту статью .ls /usr/bin | grep pinentry
. Я вижуpinentry
,pinentry-curses
,pinentry-emacs
,pinentry-gnome3
,pinentry-gtk2
,pinentry-qt
иpinentry-tty
. Таким образом, вы можете выбрать тот, который подходит вам лучше, если у вас нет недостатка в$DISPLAY
проблеме.Я только что столкнулся с этой проблемой в Ubuntu 16.04.3 при попытке создать / установить закрытый ключ с помощью gpg2 (2.1.11) для системной учетной записи без пароля и для учетной записи пользователя через ssh. Ничего не получалось, давая:
Затем я обнаружил, что это работает для меня, так вкратце:
источник
На коробке Debian:
(и установите его в pinentry-tty)
источник
На Ubuntu 18.04, с установкой по умолчанию gpg 2.2.4, у меня есть
Мне удалось сделать следующее, чтобы получить текстовую запись PIN-кода:
источник
Если у вас его нет, установите
pinentry-curses
с помощью yum или apt-get.Затем запустите:
sudo update-alternatives --config pinentry
И выберите пинентри-проклятия из списка.
источник
Я скопирую свой ответ отсюда ...
Глядя на
man pinentry-gnome3
, я вижу это:К сожалению, этот запасной вариант текстового режима не работает для меня. Кажется, у других есть такая же проблема . Тем не менее, этот комментарий стимулировал My попробовать другую GUI программу пин-запись:
pinentry-gtk2
. Вы можете переключиться так:Как только я переключился, у меня все заработало отлично! В терминале на рабочем столе он будет использовать ввод пароля GUI, но когда я зайду ssh на свою машину, он будет использовать ввод пароля в текстовом режиме.
источник
Чтобы предотвратить всплывающее окно, вы можете
ssh localhost
. Опционально принудительное отключение X11,-x Disables X11 forwarding.
см. Полный пример ниже.источник
-x Disables X11 forwarding.
следует предотвратить пересылку X11. Ответ обновлен.Я нашел «полный пример» в ответе PvdL немного запутанным, вот что я делаю:
источник
Если вы делаете ,
export GPG_TTY=$(tty)
иunset DISPLAY
это даст диалоговое окно с запросом ИТ парольной фразы. Ввод правильного пароля делает его расшифровать.Если вы НЕ выполняете вышеупомянутый экспорт GPG_TTY и не устанавливаете DISPLAY, он ожидает использовать X Windows. Если вы запустили сеанс (например, PuTTY) из системы MS-Windows с включенной переадресацией X11, он хочет отправить диалоговое окно X-Window в вашу систему MS Windows. Вы можете использовать эмулятор X, такой как Exceed или Cygwin / X, в Windows, чтобы приглашение X-Window для ключевой фразы появилось в вашем окне MS-Windows.
Тем не менее, вы можете избавиться от необходимости устанавливать GPG_TTY и сбрасывать DISPLAY и получать либо TLI, либо GUI, запустив командную строку с
--batch
параметром и введя фразу-пароль с--passphrase
параметром:У меня все 3 метода работали сегодня на RHEL6 под управлением gnupg2.
источник
export GPG_TTY=$(tty)
достаточно. Вы пробовали это? У вас есть ссылка, в которой говорится, чтоunset DISPLAY
это тоже необходимо? PS Люди не любят ставить парольные фразы в командной строке.