Ich rufe gpg2
in einem CLI-Skript die symmetrische Verschlüsselung einer lokalen Datei auf. Es scheint eine gpg-agent
Eingabeaufforderung für eine Passphrase über eine textbasierte CLI-Benutzeroberfläche zu geben. Solange ich in der Nähe bin, um die Passphrase einzugeben, funktioniert alles einwandfrei. Wenn ich jedoch nicht in der Nähe bin, schlägt es irgendwann mit dieser Meldung fehl:
gpg-agent[15338]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of `XXXX.tar' failed: Operation cancelled
Gibt es eine Möglichkeit, dieses Timeout vollständig auszuschalten?
Ich möchte, dass die Passphrase-Abfrage unbegrenzt auf dem Bildschirm angezeigt wird, bis ich etwas eingebe.
Antwort1
Die Lösung wurde hier gefunden:https://dev.gnupg.org/T3240
Die Verzögerung wird dadurch verursacht, dass der Pinentry den GNOME-Schlüsselbund abfragt. Fügen Sie no-allow-external-cache
zu Ihremgpg-agent.conf, oder entfernen gnome-keyring
und den aktuell laufenden GPG-Agenten beenden:gpgconf --kill gpg-agent
Antwort2
In gpg-agent.conf (siehegpg-agent(1)), versuchen Sie die folgenden Optionen:
pinentry-timeout 0
pinentry-program /usr/bin/pinentry-curses --timeout 0
(Vielleicht finden Sie es pinentry-tty
aber etwas angenehmer zu verwenden.)
Antwort3
Q: "Wie kann verhindert werden, dass beim Sammeln von Passphrasen eine Zeitüberschreitung beim GPG-Agent auftritt?"
A: Ein spezieller Fall ist die Verwendung von gpg
in einer ssh
Sitzung. Die folgende Konfiguration ermöglichtGPG-Agentauch innerhalb einer ssh
Sitzung. Insbesondere
- kein Greifenermöglicht Ausschneiden und Einfügen
- Kein externer Cache zulassendeaktiviert alle Schlüsselringe
- Pinentry-Flüchefragt im Terminal nach dem Passwort statt nach dem StandardPinnwandAbfrage im Remote-Desktopfenster (im Fall von SSH).
- Die Zeit zu lebenttl(5,6) wird auf 24 Stunden eingestellt. Dadurch ist es nicht notwendig, das Passwort erneut einzugeben, wenn beispielsweise täglich ein Cron ausgeführt wird, der ein Skript mit GPG-Agent aufruft.
shell> cat ~/.gnupg/gpg-agent.conf
no-grab
no-allow-external-cache
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 86400
max-cache-ttl 86400
Antwort4
Bei mir (gpg 2.1.11) hat es funktioniert, die pinentry-timeout
Option einfach auf einen großen Wert (etwa 24 Stunden) zu setzen, indem ich meiner Datei Folgendes hinzugefügt habe ~/.gnupg/gpg-agent.conf
:
# time until pinentry closes in seconds
pinentry-timeout 86400