[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminalfenster öffnen] [:sudo: Root-Rechte erlangen] [:Rechte:Dateirechte prüfen und ändern] }}} [[Inhaltsverzeichnis(1)]] 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#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 [:Artful_Aardvark: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. [:GnuPG#Installation: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]. {{{#!vorlage Paketinstallation gnupg-agent pinentry-curses, vorinstalliert seit [:Artful_Aardvark:Ubuntu 17.10], Passworteingabe über Kommandozeile / [:Terminal:] pinentry-gtk2, für [:GNOME:], [:Xfce:] oder [:LXDE:], seit [:Wily:Ubuntu 15.10] in universe }}} Für KDE: {{{#!vorlage Paketinstallation gnupg-agent pinentry-qt, für [:KDE:] in universe, wird über '''kubuntu-desktop''' automatisch mitinstalliert }}} Anschließend sollte man noch sicherstellen, dass das bevorzugte Passworteingabeprogramm auch systemweit aktiviert ist: {{{#!vorlage Befehl 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 }}} [[Anker(GPG-Agent-Starten)]] = 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] {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [:man: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. [:kill:stoppen] (wichtig!) 1. Sicherstellen dass das benötigte Programm zur Passworteingabe auch wirklich installiert und aktiviert ist (s. Kapitel [#Installation Installation]); zumindest das Paket '''pinentry-curses''' sollte installiert sein 1. Die [:Umgebungsvariable:] ``GPG_TTY`` korrekt setzen (s. [#Passworteingabe Kapitel Passworteingabe]) 1. Kontrollieren ob der aktuelle Benutzer berechtigt ist um auf die Terminal-Gerätedatei zuzugreifen [4]: {{{#!vorlage Befehl 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"). 1. Bei einer grafischen Passworteingabe (z.B. '''pinentry-gnome3''') die [:Umgebungsvariable:] ``DISPLAY`` kontrollieren{{{#!vorlage Befehl echo $DISPLAY }}} 1. Den GPG-Agenten wieder starten (s. Kapitel [#GPG-Agent-Starten Den GPG-Agenten starten]). = Links = * [:GnuPG:] - Hauptartikel * [https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html GPG-Agent in der GnuPG-Dokumentation] {en} #tag: System, Sicherheit, Kommunikation, Server, Verschlüsselung, pgp, gpg, OpenPGP