
Я использую 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-кодом :)