Emacs + GPG + pinentry.el для аутентификации - PullRequest
0 голосов
/ 23 марта 2020

Мне трудно настроить pinentry для Emacs для работы с аутентификацией (скажем, для github). Использование GPG и pinentry для подписания коммитов уже работает. Я использую ma git внутри emacs для контроля версий, и каждый раз, когда я фиксирую что-либо, в минибуфере выскакивает что-то, вводится пароль, и коммит подписывается. Все хорошо.

Однако я также использую GPG для аутентификации. I setup и подраздел аутентификации с GPG и настройка S SH для его использования. Если я делаю это из tty, то это тоже работает. Просто не изнутри Emacs. Проблема связана с $GPG_TTY env var. Если я попытаюсь что-то сделать sh в GH, то в минибуфере не появится булавка. Вместо этого он ждет и в конце концов говорит, что у меня нет разрешения.

Я должен упомянуть, что я использую emacs, точнее, EXWM в качестве моего оконного менеджера. Если я затем выйду из emacs, я увижу диалог pinentry-encurses в моем TTY. Если у меня будет другой терминал, открытый в emacs, во время нажатия на него откроется диалоговое окно pinentry-ncurses в этом терминале вместо того, чтобы вызвать pinentry.el в минибуфере.

Я гуглял и пробовал разные подходы в течение нескольких дней теперь без удачи.

~ / .gnupg / gpg-agent.conf:

allow-emacs-pinentry
allow-loopback-pinentry
default-cache-ttl 600
max-cache-ttl 7200
enable-ssh-support

~ / .gnupg / gpg.conf:

use-agent

~ /.bash_profile:

# GPG related
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export GPG_TTY=$(tty)
#gpgconf --launch gpg-agent

Моя конфигурация pinentry в emacs:

;; Enable loopback so that pinentry will pop up in emacs
(setq epa-pinentry-mode 'loopback)
(pinentry-start)

;; Update the TTY for gpg-agent
;(setenv "GPG_TTY" "/dev/pts/0")
(shell-command "gpgconf --launch-agent")
(shell-command "gpg-connect-agent updatestartuptty /bye >/dev/null")

Я попытался установить $GPG_TTY внутри emacs вручную, как вы можете видеть, но безуспешно. Меня сбивает с толку, что это будет работать только для подписания коммитов, но не для аутентификации.

...