4

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

Есть ли способ заставить gpg для mac запрашивать парольную фразу в терминале, а не в приглашении GUI?


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

4 ответа4

3

Далее предполагается, что вы используете 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

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

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

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
1

Вы можете проверить, используете ли вы 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

Источник

0

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

0

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

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

Из своего опыта использования 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-агентов и создайте нового:

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

Это оно! Наслаждайтесь старым стилем TTY pinentry :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .