Я використовую gpg-agent
для управління обома ідентифікаторами PGP e SSH. Агент запускається з такого сценарію
gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env"
export GPG_TTY="$(tty)"
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)"
else
source "$gpg_agent_env" 2> /dev/null
fi
який отримується щоразу, коли я запускаю інтерактивну оболонку. З цією настройкою все працює добре, але є проблема. Скажімо, я:
- відкрийте термінал (запуск агента у фоновому режимі) і починайте працювати
- через деякий час відкрийте другий термінал
- зробіть дію, яка потребує введення парольної фрази у другому терміналі
У цей момент gpg-agent
почне pinentry-curses
запрошувати парольну фразу, але це зробить це на першому терміналі, що призводить до того, що його результат змішується з тим, що було запущено (як правило, текстовим редактором), не маючи можливості відновити програму або зупинити стипендію (вона починає використовувати 100% процесор і я маю це вбити).
Я маю робити щось не так. Хтось це пережив?
Оновлення:
Я зрозумів, це відбувається тільки для підказки , щоб розблокувати ключ SSH, який виглядає як це , в той час як підказки для ключів PGP завжди відкриті на правильному (тобто поточного) терміналі.
export GPG_TTY="$(tty)"
це зафіксувало для мене