Wie kann verhindert werden, dass beim Sammeln von Passphrasen eine Zeitüberschreitung beim GPG-Agenten auftritt?

Wie kann verhindert werden, dass beim Sammeln von Passphrasen eine Zeitüberschreitung beim GPG-Agenten auftritt?

Ich rufe gpg2in einem CLI-Skript die symmetrische Verschlüsselung einer lokalen Datei auf. Es scheint eine gpg-agentEingabeaufforderung 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-cachezu Ihremgpg-agent.conf, oder entfernen gnome-keyringund 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-ttyaber 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 gpgin einer sshSitzung. Die folgende Konfiguration ermöglichtGPG-Agentauch innerhalb einer sshSitzung. 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-timeoutOption 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

verwandte Informationen