Wie verwende ich GnuPG mit --passphrase?

11

Ich möchte ein Skript schreiben, das gpgeine Datei namens "file" mit der Passphrase "test" ausführt.

Normalerweise gpglaufe ich bei der Verwendung einfach gpg -c fileund es fragt mich nach der Passphrase. Da dieses Skript jedoch alles selbst ausführen soll, möchte ich die Passphrase als Teil des Befehls bereitstellen.

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

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

Welche Nähte möchte ich verwenden gpg --passphrase test --symmetric file? Wenn ich das mache, wird ein Dialogfeld angezeigt, in dem ich nach der Passphrase gefragt werde. Das ist nicht was ich will.

Wie richte ich die Argumente richtig ein?

Jens Erat
quelle

Antworten:

7

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

In Bezug auf das Pin-Eingabefenster, das ohnehin angezeigt wird (obwohl Sie es 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 eine der anderen Optionen, um aus einer Datei oder Pipe zu lesen.

Jens Erat
quelle
Was Sie sagen ist, dass meine Reihenfolge der --passphraseund --symmetricArgumente tatsächlich korrekt war, aber ich habe nur das --batchArgument vermisst ? Weil das bei mir nicht funktioniert hat. Ich habe versucht, --batchsowohl vorher als auch nachher hinzuzufügen , nur für den Fall. Außerdem kann ich nicht überprüfen, ob ich GPG 2 verwende, aber der Teil, den Sie eingefügt haben und der besagt, Note that this passphrase is only used if the option --batch has also been given.dass er nicht auf meiner manSeite vorhanden ist.
Welches Betriebssystem / welche Distribution verwenden Sie? gpg --versionsollte Informationen über die von Ihnen verwendete GnuPG-Version geben. Hast du eine gpg2Binärdatei?
Jens Erat
Ich benutze Xubuntu 14.04., Die Version von gpgist 1.4.16. Inspiriert von Ihren Kommentaren fand ich heraus, dass gpg2 separat entwickelt wird, also habe ich es installiert und ausprobiert, aber es beschwert sich darüberno valid OpenPGP data found. processing message failed: Unknown system error
Jens, du bist super genial und beantwortest viele Fragen mit tollen Antworten, aber in einem Punkt liegst du falsch: "Optionen müssen vor Befehlen stehen, daher muss die Option --passphrase vor --symmetrisch stehen." Überhaupt nicht wahr.
rsaw
@rsaw: Sie haben teilweise Recht - für --symmetricund --passphrasescheint die Reihenfolge nicht relevant zu sein, aber versuchen Sie es später zu --exportdefinieren --armor. Im Allgemeinen müssen Optionen vor Befehlen stehen. Dies ist auch die in den Manpages definierte Reihenfolge.
Jens Erat
2

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

Basierend auf der Syntaxausgabe verwenden Sie wahrscheinlich v1. In diesem Fall möchten Sie:

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

Beachten Sie, dass die Reihenfolge der Optionen nicht wichtig ist. Jede Datei muss jedoch das letzte Argument sein.

rsaw
quelle
1

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

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

im Gegensatz dazu --batchwird schnell scheitern, sagen...failed: File exists


Wenn Sie ursprünglich zuerst die ausführliche Option ( -v) hinzugefügt haben, sollten Sie 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]

Dies zeigt ziemlich deutlich, dass es etwas nicht mochte, -c( --symmetric) an die erste Stelle zu setzen.


Ich betrachte das Verhalten von gpg2 beim Ignorieren von --passphraseOptionen, sofern dies nicht --batchals Fehler begleitet wird .

Xen2050
quelle