GPG-Agent
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt die Einrichtung des GPG-Agenten, ein Hintergrundprogramm das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird. Beispielsweise muss bei der Benutzung von Psi (Abschnitt „mit-OpenPGP-GnuPG“) mit signiertem Status nicht bei jeder Statusänderung das Passwort neu eingegeben werden. Der Agent speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach.
Installation¶
Das Paket gpg-agent wird bei der Installation von GnuPG Version 2 automatisch mit installiert. Seit Ubuntu 17.10 ist GnuPG Version 2 die Voreinstellung. Bei früheren Ubuntu-Versionen muss GnuPG 2 nachinstalliert werden (es wird standardmäßig noch die alte Version 1 installiert, s. Installation von GnuPG). Das Paket gnupg-agent (älterer Paketname) wird dann mit installiert. Ab Ubuntu GNOME 15.10 muss nur dieses Paket installiert werden.
Wichtig ist außerdem, dass man noch ein Passworteingabeprogramm für die jeweilige Desktop-Umgebung benötigt [1].
gnupg-agent
pinentry-curses (vorinstalliert seit Ubuntu 17.10, Passworteingabe über Kommandozeile / Terminal)
pinentry-gtk2 (für GNOME, Xfce oder LXDE, seit Ubuntu 15.10 in universe)
Befehl zum Installieren der Pakete:
sudo apt-get install gnupg-agent pinentry-curses pinentry-gtk2
Oder mit apturl installieren, Link: apt://gnupg-agent,pinentry-curses,pinentry-gtk2
Für KDE:
gnupg-agent
pinentry-qt (für KDE in universe, wird über kubuntu-desktop automatisch mitinstalliert)
Befehl zum Installieren der Pakete:
sudo apt-get install gnupg-agent pinentry-qt
Oder mit apturl installieren, Link: apt://gnupg-agent,pinentry-qt
Anschließend sollte man noch sicherstellen, dass das bevorzugte Passworteingabeprogramm auch systemweit aktiviert ist:
sudo update-alternatives --config pinentry
Es gibt 5 Auswahlmöglichkeiten für die Alternative pinentry (welche /usr/bin/pinentry bereitstellen). Auswahl Pfad Priorität Status ------------------------------------------------------------ 0 /usr/bin/pinentry-gnome3 90 automatischer Modus 1 /usr/bin/pinentry-curses 50 manueller Modus 2 /usr/bin/pinentry-gnome3 90 manueller Modus 3 /usr/bin/pinentry-gtk-2 85 manueller Modus 4 /usr/bin/pinentry-qt 80 manueller Modus * 5 /usr/bin/pinentry-qt4 80 manueller Modus Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten, oder geben Sie die Auswahlnummer ein: 5
Den GPG-Agenten starten¶
GnuPG Version 2 startet den Agenten beim ersten Aufruf von "gpg2" automatisch im Hintergrund. Man muss sich erstmal um nichts weiter kümmern.
GnuPG Version 1 sollte zwar generell nicht mehr verwendet werden. Wer das allerdings trotzdem möchte, sollte den Agenten am Anfang einer Sitzung starten, da dieser eine Umgebungsvariable setzt, die allen Programmen, die den Agenten benutzen sollen, bekannt sein muss. Dazu wird auch automatisch ein Startskript in der Datei /etc/X11/Xsession.d/90gpg-agent angelegt. Es ist aber trotzdem noch nötig, im Heimatverzeichnis jedes Benutzers die Datei ~/.gnupg/gpg.conf mit dem Inhalt use-agent anzulegen. Die Befehle [2]
gpg -qk echo "use-agent" >> ~/.gnupg/gpg.conf
erledigen das. Der erste der beiden Befehle wird nur dazu verwendet um das Verzeichnis ~/.gnupg/ anzulegen, falls dieses noch nicht existieren sollte.
Optionen¶
Um den GPG-Agenten an die eigenen Bedürfnisse anzupassen, kann man noch verschiedene Optionen einstellen:
Option | Bedeutung |
--daemon | normaler Aufruf um den Dämon zu starten |
--ignore-cache-for-signing | erzwingt eine erneute Passworteingabe um andere Schlüssel zu signieren |
--default-cache-ttl n | setzt die Zeit wie lange ein Passwort im Cache bleibt auf n Sekunden, Standard ist 600 |
--max-cache-ttl n | setzt die maximale Zeit wie lange ein Passwort im Cache bleibt auf n Sekunden, Standard ist 7200 (2 Stunden) |
--pinentry-program filename | setzt explizit das Passworteingabeprogramm auf filename |
Die Optionen fügt man entweder direkt mit Root-Rechten [3] in die Datei /etc/X11/Xsession.d/90gpg-agent ein, wodurch sie aber global für alle Benutzer des Systems gelten oder besser in die Datei ~/.gnupg/gpg-agent.conf, die für jeden Benutzer separat (ohne Root-Rechte) angelegt wird. Dort werden dann "–" bei jeder Option weggelassen und es wird jeweils eine neue Zeile angefangen. Mit folgenden Befehlen wird eine Grundkonfiguration gespeichert:
gpg -qk echo -e "default-cache-ttl 18000\nmax-cache-ttl 86400\nignore-cache-for-signing" >> ~/.gnupg/gpg-agent.conf chmod 600 ~/.gnupg/gpg-agent.conf
Diese Befehle hängen die Zeilen
default-cache-ttl 18000 max-cache-ttl 86400 ignore-cache-for-signing
an die Datei ~/.gnupg/gpg-agent.conf an (und erstellen sie, falls sie noch nicht vorhanden war). Dadurch bleiben Passwörter 18000 Sekunden (= 5 Stunden) im Cache, maximal (also auch bei häufiger Benutzung) jedoch 86400 Sekunden (= 24 Stunden). Zum Signieren von anderen Schlüsseln wird immer nach dem Passwort gefragt.
Passworteingabe¶
Im Terminal sollte vor dem Aufruf von "gpg2" immer folgender Befehl ausgeführt werden:
export GPG_TTY=$(tty)
Darüber wird sichergestellt, dass die Passworteingabe über die richtige Terminal-Gerätedatei erfolgt.
Weitere Einsatzmöglichkeiten¶
Der GPG-Agent kann auch SSH-Passwörter verwalten. Hinweise dazu findet man in der Manpage.
Problembehebung¶
Keine Berechtigung¶
gpg: Problem mit dem Agenten: Keine Berechtigung gpg: Fehler beim Erzeugen der Passphrase: Verarbeitung wurde abgebrochen
Solche oder ähnliche Fehler kann man versuchen wie folgt zu lösen:
Einen bereits laufenden GPG-Agenten ggf. stoppen (wichtig!)
Sicherstellen dass das benötigte Programm zur Passworteingabe auch wirklich installiert und aktiviert ist (s. Kapitel Installation); zumindest das Paket pinentry-curses sollte installiert sein
Die Umgebungsvariable
GPG_TTY
korrekt setzen (s. Kapitel Passworteingabe)Kontrollieren ob der aktuelle Benutzer berechtigt ist um auf die Terminal-Gerätedatei zuzugreifen [4]:
id -un ls -l $(tty)
Ist der aktuelle Benutzer nicht berechtigt, hat man wahrscheinlich per "sudo" oder "su" das Benutzerkonto gewechselt. Man sollte sich in diesem Fall direkt mit dem gewünschten Benutzer auf einem Terminal einloggen (ohne "sudo" oder "su").
Bei einer grafischen Passworteingabe (z.B. pinentry-gnome3) die Umgebungsvariable
DISPLAY
kontrollierenecho $DISPLAY
Den GPG-Agenten wieder starten (s. Kapitel Den GPG-Agenten starten).
Links¶
GnuPG - Hauptartikel