J'utilise gpg-agent
pour gérer les deux identités PGP e SSH. L'agent démarre avec un script comme celui-ci
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
qui provient chaque fois que je lance un shell interactif. Tout fonctionne bien avec cette configuration mais il y a un problème. Disons que je:
- ouvrir un terminal (lancement de l'agent en arrière-plan) et commencer à travailler
- après un certain temps, ouvrez un deuxième terminal
- effectuer une action nécessitant la saisie d'une phrase secrète dans le deuxième terminal
À ce stade gpg-agent
, pinentry-curses
un mot de passe sera lancé, mais il le fera dans le premier terminal, ce qui entraînera un mélange de sa sortie avec tout ce qui était en cours d'exécution (généralement un éditeur de texte) sans aucun moyen de reprendre le programme ou d'arrêter le pinentry (il commence à utiliser 100% cpu et je dois le tuer).
Je dois faire quelque chose de mal ici. Quelqu'un a vécu cela?
Mise à jour:
J'ai compris que cela ne se produit que pour une invite à déverrouiller une clé SSH, qui ressemble à ceci , tandis que les invites pour les clés PGP s'ouvrent toujours sur le tty correct (c'est-à-dire actuel).
export GPG_TTY="$(tty)"
ça qui l'a réparé pour moi