Eu uso gpg-agent
para gerenciar ambas as identidades PGP e SSH. O agente é iniciado com um script como este
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
que é originário sempre que executo um shell interativo. Tudo funciona bem com essa configuração, mas há um problema. Digamos que eu:
- abra um terminal (iniciando o agente em segundo plano) e comece a trabalhar
- depois de um tempo abra um segundo terminal
- execute uma ação que exija a inserção de uma senha no segundo terminal
Nesse ponto gpg-agent
, começará a pinentry-curses
solicitar uma senha, mas o fará no primeiro terminal, o que resultará em sua saída misturada com o que estiver em execução (geralmente um editor de texto) sem nenhuma maneira de retomar o programa ou interromper a pinentry (ele começa a usar 100% da CPU e eu tenho que matá-lo).
Eu devo estar fazendo algo errado aqui. Alguém já experimentou isso?
Atualizar:
Eu descobri que isso acontece apenas para um prompt para desbloquear uma chave SSH, que se parece com isso , enquanto os avisos para chaves PGP sempre abrem no tty correto (atual).
export GPG_TTY="$(tty)"
isso que