ubuntuusers.de

GPG-Agent

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

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.

Wichtig ist außerdem, dass man noch ein Passworteingabeprogramm für die jeweilige Desktop-Umgebung benötigt [1].

Paketliste zum Kopieren:

sudo apt-get install gnupg-agent pinentry-curses pinentry-gtk2 

Oder mit apturl installieren, Link: apt://gnupg-agent,pinentry-curses,pinentry-gtk2

oder ab Ubuntu 15.10 für GNOME:

Paketliste zum Kopieren:

sudo apt-get install gnupg-agent pinentry-gnome3 

Oder mit apturl installieren, Link: apt://gnupg-agent,pinentry-gnome3

oder für KDE:

  • gnupg-agent

  • pinentry-qt (für KDE in universe, wird über kubuntu-desktop automatisch mitinstalliert)

Paketliste zum Kopieren:

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:

  1. Einen bereits laufenden GPG-Agenten ggf. stoppen (wichtig!)

  2. 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

  3. Die Umgebungsvariable GPG_TTY korrekt setzen (s. Kapitel Passworteingabe)

  4. 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").

  5. Bei einer grafischen Passworteingabe (z.B. pinentry-gnome3) die Umgebungsvariable DISPLAY kontrollieren

    echo $DISPLAY 
  6. Den GPG-Agenten wieder starten (s. Kapitel Den GPG-Agenten starten).

Diese Revision wurde am 27. April 2019 17:19 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: OpenPGP, gpg, Verschlüsselung, pgp, Server, Sicherheit, System, Kommunikation