Wie verwende ich GnuPG mit --passphrase?

Wie verwende ich GnuPG mit --passphrase?

gpgIch möchte ein Skript schreiben, das eine Datei namens „file“ mit der Passphrase „test“ ausführt .

Normalerweise führe ich bei der Verwendung gpgeinfach aus gpg -c fileund werde nach der Passphrase gefragt. Da dieses Skript aber alles selbst erledigen soll, möchte ich die Passphrase als Teil des Befehls angeben.

Wenn ich jetzt versuche, Folgendes zu verwenden: gpg -c file --passphrase testwird Folgendes ausgegeben:

Verwendung: gpg [Optionen] --symmetric [Dateiname]

Das sieht so aus, als ob ich verwenden soll gpg --passphrase test --symmetric file. Wenn ich das aber tue, wird ein Dialogfeld angezeigt, in dem ich nach der zu verwendenden Passphrase gefragt werde. Das ist aber nicht das, was ich möchte.

Wie baue ich die Argumente richtig auf?

Antwort1

In GnuPG müssen Optionen vor Befehlen stehen, daher --passphrasemuss die Option vor stehen --symmetric.

Was das Pin-Eingabefenster betrifft, das trotzdem erscheint (obwohl Sie verwenden --passphrase), verwenden Sie wahrscheinlich bereits GnuPG 2, das --batchzusammen mit verwendet werden muss --passphrase. Aus den Manpages:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

Beachten Sie, dass auf Mehrbenutzersystemen alle anderen Benutzer Ihre Befehlszeile und damit auch die Passphrase lesen können, während GnuPG ausgeführt wird. Verwenden Sie --passphrase-*stattdessen besser eine der anderen Optionen, um aus einer Datei oder Pipe zu lesen.

Antwort2

Die Verwendung --pinentry-mode loopbackfunktioniert mit --passphrase& --passphrase-[file/fd]und ermöglicht Ihnen die Eingabe neuer Informationen, beispielsweise im Falle von Dateinamenkonflikten:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

im Gegensatz --batchzu dem wird schnell scheitern, sagen...failed: File exists


Wenn Sie zuerst die ausführliche Option () hinzugefügt hätten -v, sollten Sie etwas wie Folgendes gesehen haben:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

-cwas ziemlich deutlich darauf hinweist, dass ihm die Tatsache, ( ) an die erste Stelle zu setzen, nicht gefiel --symmetric.


Ich betrachte das Verhalten von gpg2, --passphraseOptionen zu ignorieren, sofern sie nicht von begleitet werden, --batchals einen Fehler.

Antwort3

Wenn gpg --versionv2 gemeldet wird, müssen Sie die --batchOption hinzufügen.

Basierend auf der Syntaxausgabe verwenden Sie wahrscheinlich Version 1. In diesem Fall benötigen Sie:

gpg --passphrase PASS -c --no-use-agent FILE

Beachten Sie, dass die Reihenfolge der Optionen nicht wichtig ist. Das letzte Argument muss jedoch „any file“ sein.

Antwort4

Sie können es folgendermaßen verwenden:

gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c

Auch die Verwendung von Batch ist kein Fehler, es wurde in der Dokumentation geschriebenHier:

Screenshot aus Dokumenten

verwandte Informationen