gpg2 на Mac: как ввести парольную фразу в терминале вместо получения графического интерфейса?

gpg2 на Mac: как ввести парольную фразу в терминале вместо получения графического интерфейса?

Я использую Mountain Lion, и когда я шифрую файл с помощью gpg, раздражающий GUI предлагает мне ввести парольную фразу. Я хотел бы, чтобы меня просили ввести парольную фразу в терминале, а не во внешнем GUI. Я могу делать это удаленно, например.

Есть ли способ заставить gpg для Mac запрашивать пароль в терминале, а не в графическом интерфейсе?


ОБНОВЛЯТЬ:Это кажется очень сложным с gpg2, поэтому я откатился до gpg1. Пробовал все с gpg2 (MacGPG2), и ничего не помогло. Отстой! С gpg1 работает отлично!

решение1

Далее предполагается, что вы используете gnupg2 с macports, а не MacGPG2, но исправление, скорее всего, применимо к вашему варианту использования.

Установите пакет «pinentry» из macports:

port -v install pinentry

Отредактируйте ваш ~/.gnupg/gpg-agent.conf следующим образом:

pinentry-program /opt/local/bin/pinentry-curses

Удалите или закомментируйте существующую запись 'pinentry-program'. Перезагрузите терминал или используйте это:

echo RELOADAGENT | gpg-connect-agent

Готово. Теперь у вас должен быть pinentry/passphrase в терминале (диалог curses). Если вы хотите иметь старое поведение gpg v1.x inline-ttl pinentry, вы можете использовать пользовательскую команду './configure' с пакетом macports pinentry.

Если вы ранее устанавливали инструменты MacGPG2 / GPG для Mac, вам может потребоваться завершить процесс «shutdown-gpg-agent», прежде чем диалоговое окно ввода пароля заработает (или просто перезагрузить компьютер).

user$ ps ax |grep shutdown-gpg-agent
 1854   ??  S      0:00.01 /bin/bash /usr/local/MacGPG2/libexec/shutdown-gpg-agent

user$ kill -KILL 1854

решение2

Проверить, подключены ли вы к sshсети, можно, проверив переменную окружения SSH_CONNECTION.

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Я использую проверки, чтобы узнать, не превышаю ли я лимит, sshиспользуя tmuxследующую проверку:

export GPG_TTY=$(tty)
if [[ -n "$SSH_CONNECTION" || -n "$TMUX" ]] ;then
    export PINENTRY_USER_DATA="USE_CURSES=1"
fi

Источник

решение3

Три слова: скомпилируйте его сами. Да, вы можете это сделать! Но сначала обязательно избавьтесь от файла gpg-agent.conf!

решение4

Я только что закончил компиляцию GnuPG (версии 2.2.9) и всех его зависимостей для Mac OS High Sierra. Это было довольно интересно. После решения небольшой проблемы с тестами libgcrypt (с небольшой помощью соответствующего рецепта от Homebrew) все заработало практически из коробки.

При попытке импортировать свой закрытый ключ я не смог, так как в системе отсутствовала программа pinentry. Быстрый поиск привел меня на эту страницу, но она не очень помогла, поэтому я просто решил скомпилировать pinentry самостоятельно.

Я уже знал, из своего опыта использования GnuPG на машинах Linux, что я хотел бы вводить свой пароль в обычном приглашении в командной строке, без этих раздражающих, отвлекающих диалоговых окон. И вот почему я делюсь этим процессом здесь. Это просто, но может помочь кому-то с похожей проблемой.

Начните с получения исходного кода pinentry от GnuPG. Проверьте ихВеб-сайт. На момент написания статьи ссылка на скачивание исходника былаhttps://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2. Загрузите такжеподписьи проверить подлинность с помощью самого gpg.

НЕ ПРОПУСТИТЕ ПРОВЕРКУ,это важно! Эта программа будет иметь доступ ко всем вашим паролям gpg и закрытым ключам. Вам лучше убедиться, что это то, за что она себя выдает! Если у вас возникли проблемы, убедитесь, что вы импортировали ключи от разработчиков GnuPG (см.здесь):

$ gpg --verify pinentry-1.1.0.tar.bz2.sig pinentry-1.1.0.tar.bz2

Теперь, когда вы уверены, что работаете с подлинными исходными файлами, извлеките исходный код и cdв этом каталоге выполните следующие действия:

$ tar xvf pinentry-1.1.0.tar.bz2
$ cd pinentry-1.1.0

Компиляция очень прямолинейна:

$ ./configure --enable-pinentry-tty
$ make
$ sudo make install

Может быть, он configureбудет жаловаться на какую-то отсутствующую зависимость. В этом случае просто прочитайте ошибку и загрузите зависимость с веб-страницы GnuPG (всегда проверяя целостность загрузки!).

Важная часть команд выше — это флаг --enable-pinentry-tty. Pinentry TTY — это самый простой способ ввести пароль в очень обычном и скучном приглашении в командной строке. Именно то, что я хотел! Если я не ошибаюсь, версия cursesбудет создана в любом случае. Хотя это опция CLI, я нахожу ее такой же разрушительной, как и все остальные.

После установки вы увидите несколько новых двоичных файлов в /usr/local/bin. Убедитесь, что у вас есть один под названием pinentry-tty(если нет, что-то пошло не так...).

Чтобы сделать этот новый двоичный файл способом ввода пароля gpg по умолчанию, добавьте следующую строку ~/.gnupg/gpg-agent.conf(создайте файл и каталог, если они еще не существуют):

pinentry-program /usr/local/bin/pinentry-tty

Это, вероятно, не сработает, если вы попробуете немедленно, потому что у вас, скорее всего, все еще есть gpg-agent, работающий со старой конфигурацией. Продолжайте и убейте все gpg-agents и создайте новый:

$ sudo killall gpg-agent
$ gpg-agent --daemon

Вот и все! Наслаждайтесь старомодным TTY-кодом :)

Связанный контент