Ich verwende gpg-agent
zum Verwalten beider PGP- und SSH-Identitäten. Der Agent wird mit einem solchen Skript gestartet
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
Das wird immer dann bezogen, wenn ich eine interaktive Shell ausführe. Mit diesem Setup funktioniert alles einwandfrei, aber es gibt ein Problem. Sagen wir ich:
- Öffnen Sie ein Terminal (starten Sie den Agenten im Hintergrund) und beginnen Sie zu arbeiten
- Nach einer Weile öffnen Sie ein zweites Terminal
- Führen Sie eine Aktion aus, bei der im zweiten Terminal eine Passphrase eingegeben werden muss
An diesem Punkt gpg-agent
wird pinentry-curses
eine Passphrase abgefragt, dies wird jedoch im ersten Terminal ausgeführt, was dazu führt, dass die Ausgabe mit dem, was gerade ausgeführt wurde (normalerweise ein Texteditor), gemischt wird, ohne dass das Programm fortgesetzt oder die Pinentry gestoppt werden kann (es beginnt mit der Verwendung von 100% CPU) und ich muss es töten).
Ich muss hier etwas falsch machen. Hat das jemand erlebt?
Aktualisieren:
Ich fand heraus , geschieht dies nur für eine Aufforderung einen SSH - Schlüssel, die aussieht wie zu entsperren diese , während Ansagen für PGP - Schlüssel immer offen auf der richtigen (dh Strom) tty.
export GPG_TTY="$(tty)"
, was es für mich