Отключить gnome от запроса парольной фразы в графическом интерфейсе при использовании ssh и gpg с терминала [дубликат]

Это на этот вопрос уже есть ответ:

С тех пор, как я установил Ubuntu Desktop 16.10 Gnome (раньше у меня был 15.10), меня раздражал этот факт что всякий раз, когда я пытаюсь добавить SSH-ключ или импортировать ключ GPG с помощью терминала, появится всплывающее окно графического интерфейса пользователя с запросом пароля.

Используя SSH, я обхожу эту проблему, запуская новый агент на терминале и затем пытаясь добавить ключ. И, наконец, он запрашивает у меня парольную фразу в TTY или не в графическом интерфейсе.

С GPG я только начал изучать, поэтому не знаю, как обойтись.

Есть ли способ отключить это и заставить их запрашивать парольную фразу в TTY при доступе из TTY?

Я прочитал ответы в этом вопросе, но он касается ubuntu 12.04 и два верхних ответа не сработали для меня.

9
задан 13 April 2017 в 05:23

1 ответ

SSH и GPG используют так называемые "агенты" для кэширования дешифрованных закрытых ключей, так, чтобы пользователи не вводили свои пароли все время. По умолчанию они используют программу pinentry к этой цели.

Прежде чем мы продолжим, давайте удостоверимся, что пример для программы ввода PIN-кода командной строки доступен в Вашей системе. В репозитории Ubuntu мы имеем pinentry-curses (начиная с навсегда) и pinentry-tty (начиная с Гостеприимного), но они не установлены по умолчанию. Можно получить его от пакета того же имени:

sudo apt install pinentry-curses

Установка другой программы ввода PIN-кода

Можно скорректировать программу, используемую для ввода PIN-кода также:

  • Установка (в расчете на пользователя) pinentry-program в Вашем ~/.gnupg/gpg-agent.conf к программе ввода PIN-кода командной строки, например:

    pinentry-program /usr/bin/pinentry-curses
    

    Необходимо или перезапустить агент или иметь его, перезагружают его конфигурацию:

    gpg-connect-agent <<< RELOADAGENT
    
  • (в масштабе всей системы) Во всех общих дистрибутивах Linux включая Ubuntu значение по умолчанию pinentry программа является на самом деле символьной ссылкой на фактическую программу ввода PIN-кода. Целью этой символьной ссылки управляют update-alternatives система. Можно использовать его для изменения цели ссылки на программу ввода PIN-кода командной строки:

    sudo update-alternatives --config pinentry
    

Выбор программы ввода PIN-кода на основе доступности терминала

Недостаток обоих из этих методов - то, что Вы не сможете использовать ввод PIN-кода командной строки, если SSH или GPG будут вызваны из программы, работающей без терминала, например, графического клиента SFTP или почтового агента пользователя. Лучший путь состоял бы в том, чтобы использовать графическую программу ввода PIN-кода только, когда X-сервер доступен, и терминал недоступен. К этой цели нам будет нужен маленький сценарий обертки, который анализирует среду перед подчинением правильной программе ввода PIN-кода.

Давайте предположим, что у нас есть следующий исполняемый сценарий оболочки в ~/.local/bin/my-smart-pinentry:

#!/bin/sh
set -eu

# Configuration -- adjust these to your liking
PINENTRY_TERMINAL='/usr/bin/pinentry-curses'
PINENTRY_X11='/usr/bin/pinentry-x11'

# Action happens below!
if [ -n "${DISPLAY-}" -a -z "${TERM-}" ]; then
    exec "$PINENTRY_X11" "$@"
else
    exec "$PINENTRY_TERMINAL" "$@"
fi

Для использования этой обертки в качестве ввода PIN-кода "программа", можно использовать упомянутый выше метод в расчете на пользователя. Можно также добавить его к update-alternatives база данных.

12
ответ дан 23 November 2019 в 04:58

Другие вопросы по тегам:

Похожие вопросы: