Ich erwarte, dass der folgende Befehl die gpg-Datei extrahiert, ohne nach dem Passwort zu fragen:
gpg --passphrase 1234 file.gpg
Aber es fragt nach dem Passwort. Warum?
Dies hat auch das gleiche Verhalten:
gpg --passphrase-file passfile.txt file.gpg
Ich benutze Ubuntu mit Gnome 3 und erinnere mich, dass es in Fedora funktioniert hat
shell-script
gpg
Omid
quelle
quelle
gpg
dass Sie den richtigen Befehl ausführen, keinen Alias oder Wrapper? Versuchen Sie/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
undset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
nach einer Passphrase gefragt wird, während dies in GPG 1.x nicht der Fall ist. Das war mein Problem (in einem Programm, das ich schreibe), während ich dachte, ich hätte Ihr Problem (das --list-packages-Ding wurde zuerst ausgeführt, bevor ich versuchte, es zu entschlüsseln, und ich habe es nicht bemerkt). Also habe ich eine neue Methode entwickelt, um festzustellen, ob Dateien verschlüsselt wurden.Antworten:
Ich bin genau in Ihrem Boot (es funktionierte auf Fedora, aber nicht auf Ubuntu). Hier ist eine offensichtliche Arbeit, die ich entdeckt habe:
Erläuterung: Das Übergeben von
0
Ursachen--passphrase-fd
liest aus STDIN und nicht aus einer Datei. Wenn Sie die Passphrase weiterleiten, wird--passphrase-fd
die angegebene Kennwortzeichenfolge akzeptiert.quelle
--batch --yes
des oben genannten hat für mich funktioniert.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. Wie löse ich das?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
scheint es zu funktionieren.Inappropriate ioctl for device
mit und ohne--batch
(auf gpg (GnuPG) 2.1.18).echo "hello" | cat
undecho "hello"| cat
beide ergeben die gleiche Zeichenfolge.Aktualisiert am 04.12.2017. (Hinzufügen von --batch, um die Passwortabfrage zu verhindern)
Möglicherweise müssen Sie die
--batch
Option hinzufügen :Ab Version 2 von
GPG
wird die Option--batch
benötigt, um sicherzustellen, dass keine Eingabeaufforderung mehr angezeigt wird.Versuchen:
klingt gut! Na dann:
Obwohl kein
-d
Parameter angegeben ist (dieselbe Syntax wie bei der Frage von SO), werden entschlüsselte Daten ausfile.gpg
einem neuen extrahiertfile
.Das funktioniert gut!
quelle
--passphrase
Parameter funktioniert für Batch-Vorgänge und fordert Sie nicht zur Eingabe eines Kennworts auf.unset GPG_AGENT_INFO
und auchGPG_AGENT_INFO=/dev/null
dieses (weiter) zu arbeiten ... Vielleicht$GPG_AGENT_INFO
hilft ein Stoppen vielleicht !? (Lass es uns wissen; bitte antworte, ich bearbeite, wenn dies hilft!)Für gpg Version 2.x brauchen Sie nicht zu verwenden
--batch
, einfacharbeitet mit
--passphrase
&--passphrase-file
und lässt Sie neue Informationen eingeben, zum Beispiel bei Dateinamenskonflikten:im
--batch
gegensatz dazu wird das schnell scheitern sagen...failed: File exists
(Getestet auf Debian Stable / Stretch's gpg 2.1.18. Dieses Verhalten, wichtige
--passphrase
Optionen zu ignorieren , sollte wirklich ein Fehler sein, wenn es noch nicht geschehen ist. )quelle
Es hört sich so an, als würden Sie gpg2 verwenden. Sie müssen auch die
--batch
Option einwerfen . (Wenn Sie dies zu einem Skript hinzufügen möchten, möchten Sie dies--no-tty
wahrscheinlich auch hinzufügen--yes
.)quelle
Für mich löste das Hinzufügen von "--no-use-agent" dieses Problem für "gpg (GnuPG) 1.4.16":
quelle
Wenn Sie gpg (GnuPG) 2.2.7 verwenden, lesen Sie die Manpage
hinzufügen,
--pinentry-mode loopback
um zu arbeitenZum Beispiel:
quelle
--batch
und--pinentry-mode loopback
erforderlich, damit die Option --passphrase ... funktioniert? In Version 2.1.18 steht auf der Infoseite dasselbe (aber nicht auf der Manpage) über Batch & Pinentry, das jedoch nur mit --pinentry funktioniert ... Wenn beide wirklich für Version 2.2.7 benötigt werden, dann sind die Dinge werden lächerlich, Entwickler führen absichtlich schwerwiegende Fehler einFür mich hat es wie Zauberei funktioniert:
quelle
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. Irgendwelche Ideen?quelle
hast du versucht zu tun:
Quelle: hier
quelle
Ich denke, dass eine ziemlich sichere Methode, um das Passwort an die Kommandozeile zu übergeben, ist:
Damit wird der Befehl "echo" erzeugt und ein Dateideskriptor als Pfadname an gpg übergeben (z. B. / dev / fd / 63). gpg liest dann den Schlüssel von dort. In der Zwischenzeit sollte der Echo-Befehl parallel ausgeführt und sofort beendet werden, wobei die Taste im Puffer des fd verbleibt.
Vorteile sind:
quelle
Sie werden mir nicht glauben, wenn ich Ihnen sage, dass gpg auf Ubuntu versucht, Ihr Passwort zu erfragen, wenn $ DISPLAY gesetzt ist, und es vom Kommandozeilen-Passwort nimmt, wenn Sie es aufheben. Das funktioniert wie erwartet:
Nur ein weiteres Beispiel für Over Engineering, denke ich.
quelle
Hier ist ein Link zu einer Stackoverflow- Antwort, die möglicherweise weitere Unterstützung bietet . Ich habe ein Projekt, das Massenentschlüsselung / -verschlüsselung durchführt, und da GnuPG sehr streng mit Passwörtern umgeht, habe ich die harte Weise gelernt, die
--passphrase
nur in seltenen Fällen funktioniert. Betrachten Sie stattdessen die--passphrase-fd
Option als zuverlässiger.Dieses Skript nutzt die Option ordnungsgemäß
--passphrase -fd
und wurde öffentlich über Travis-CI getestet, wo Sie Protokolle davon in Aktion finden können.Jetzt werde ich nicht nur Links zu einer Antwort posten, ohne hier einen Beispielcode anzugeben. Hier ist also ein aktualisiertes "Stand Alone" -Skript, mit dem Sie spielen können:
Das Obige ist zwar nicht so ausgefallen wie der verknüpfte Schutz bei GitHub, sollte aber noch funktionaler sein als die Antwort, die zu Beginn dieses Beitrags verlinkt wurde.
Viel Spaß beim Hacken.
quelle
Wie in man gpg erwähnt, kann die folgende Option verwendet werden
--pinentry-mode mode Stellt den Pinentry-Modus auf mode ein. Zulässige Werte für mode sind:
Das Standardverhalten von gpg besteht darin, den Benutzer zur Eingabe einer Passphrase aufzufordern, wenn dieser Benutzeragentenmodus auf "--pinentry-mode loopback" geändert wird. Dies funktioniert einwandfrei. Befehl abschließen
quelle
Eine einfache Methode, die ich auf einem Linux-Computer gefunden habe, ist: 1) Importiere den Schlüssel nach gpg: => shell> gpg —importiere private_key.key
2) entschlüsseln Sie den Dateinamen: => shell> gpg —output -d
2.1) Wenn Sie den obigen Befehl eingeben, werden Sie aufgefordert, eine Umschreibung einzugeben. Geben Sie die Umschreibung ein und die gpg-Datei wird entschlüsselt.
quelle
quelle
Am Ende setzen von
~/.gnupg/gpg.conf
:Am Ende der (möglicherweise neuen) Datei einfügen
~/.gnupg/gpg-agent.conf
:Führen Sie dann diesen Befehl aus:
Jetzt können Sie dies ausführen, ohne nach dem Passwort zu fragen:
Dabei ist $ 1 der zu verschlüsselnde Text, $ 2 die Benutzer-ID und $ 3 das Kennwort.
Hinweis: Ich kann mich nicht erinnern, warum es funktioniert, aber es funktioniert. Wenn Sie die Details kennen, bearbeiten Sie diese bitte und fügen Sie sie hier ein.
quelle