Как заставить GPG запускать пинентри на правильном TTY, а не только на последнем открытом?

268
C. Carey

У export GPG_TTY=$(tty); gpg-connect-agent updatestartuptty /bye;меня .profileтак, что GPG знает, какой tty использовать при запуске pinentry.

Проблема в том, что это заставляет запуск pinentry на самом последнем открытом pty, а не на том, что я хочу, то есть на pty, который запускает pinentry.

Какое решение для этого? Я использую gpg-agent как ssh-agent.

В связи с этим, иногда, когда я запускаю действие, требующее pinentry, абсолютно ничего не происходит - pinentry не запускается ни на одном pty, даже на самом открытом.

Спасибо!

0

1 ответ на вопрос

0
RalfFriedl

Агент принимает соединения на локальном сокете. Когда он принимает соединение, он не может выяснить, с каким tty связана запрашивающая программа, вообще ли он связан с tty. Поэтому он должен выбрать источник ввода по другим критериям.

В случае, когда вы ничего не видите, он, вероятно, выбрал tty, который уже закрыт или недоступен по другим причинам.