Uso gpg-agent
per la gestione di entrambe le identità PGP e SSH. L'agente viene avviato con uno script come questo
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
che proviene ogni volta che eseguo una shell interattiva. Tutto funziona bene con questa configurazione ma c'è un problema. Diciamo che io:
- aprire un terminale (avviare l'agente in background) e iniziare a lavorare
- dopo un po 'aprire un secondo terminale
- eseguire un'azione che richiede l'immissione di una passphrase nel secondo terminale
A questo punto gpg-agent
inizierà a pinentry-curses
richiedere una passphrase ma lo farà nel primo terminale che si traduce in un suo output mischiato a tutto ciò che era in esecuzione (di solito un editor di testo) senza alcun modo per riprendere il programma o interrompere la pinentry (inizia a usare il 100% della CPU e devo ucciderlo).
Devo fare qualcosa di sbagliato qui. Qualcuno l'ha sperimentato?
Aggiornare:
Ho capito che questo accade solo per un prompt per sbloccare una chiave SSH, che assomiglia a questo , mentre le richieste per le chiavi PGP si aprono sempre sul tty corretto (cioè corrente).
export GPG_TTY="$(tty)"
questo a