GPG2 fragt nach einem Passwort, auch wenn --passphrase angegeben ist

GPG2 fragt nach einem Passwort, auch wenn --passphrase angegeben ist

Ich versuche, eine GPG-Entschlüsselung zu skripten und muss daher das Passwort in der Befehlszeile angeben. Laut der Manpage gibt es dazu drei Möglichkeiten: aus einer Datei lesen mit --passphrase-file, von stdin (oder einem anderen Dateideskriptor) lesen mit --passphrase-fd 0oder in die Befehlszeile einbinden mit nur --passphrase. Alle oben genannten Optionen müssen auch --batchfestgelegt werden, was ich getan habe.

Mein jüngster Befehlszeilenversuch ist:

echo "<password>" | gpg2 --no-tty --batch --passphrase-fd 0 -d -o /<path_to_destination>/$FILE_NAME $FILE

woraufhin immer noch ein Dialog erscheint, der nach dem Passwort fragt. Was übersehe ich hier? Zur Information, falls es einen Unterschied macht: Mein Passwort enthält einige Sonderzeichen wie &, aber darüber scheint es sich nicht zu beschweren. Außerdem ist die GPG-Version 2.1.9:

# gpg2 --version
gpg (GnuPG) 2.1.9
libgcrypt 1.7.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

EDIT: Im Gegensatz zuWie zwingt man GPG, zur Eingabe von Passwörtern Pinentry im Konsolenmodus zu verwenden?, das lediglich versucht, einen textbasierten Kennworteintrag zur Verwendung in einer SSH-Sitzung zu erhalten, versuche ich, eine vollständig nicht-interaktive Methode zur Verwendung von GPG für die Verwendung in Skripten zu erhalten.

Antwort1

Ich habe hier die Lösung gefunden:https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase

Kurz gesagt musste ich zuerst den Pinentry-Loopback-Modus im GPG-Agenten aktivieren, indem ich der ~/.gnupg/gpg-agent.confDatei die folgende Zeile hinzufügte:

allow-loopback-pinentry

Dann füge ich das --pinentry-mode loopbackArgument zu meinem gpg2Aufruf hinzu

verwandte Informationen