
私は gpg 復号化のスクリプトを作成しようとしているので、コマンド ラインでパスワードを指定する必要があります。マニュアル ページによると、これを行うには 3 つの方法があります。 を使用してファイルから読み取る--passphrase-file
、 を使用して stdin (または別のファイル記述子) から読み取る--passphrase-fd 0
、または のみを使用してコマンド ラインに含める方法です--passphrase
。上記のすべてでは も--batch
設定する必要があり、私はそれを行いました。
私の最近のコマンドラインの試みは次のとおりです。
echo "<password>" | gpg2 --no-tty --batch --passphrase-fd 0 -d -o /<path_to_destination>/$FILE_NAME $FILE
それでも、パスワードを求めるダイアログがポップアップ表示されます。ここで何が欠けているのでしょうか? 参考までに、違いがあるかどうかはわかりませんが、私のパスワードには などの特殊文字が含まれています&
が、それについてはエラーは表示されません。また、gpg のバージョンは 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
編集: 違うGPG にコンソール モードの pinentry を使用してパスワードを要求するように強制するにはどうすればよいですか?これは単に SSH セッションで使用するためのテキストベースのパスワード エントリを取得しようとしているだけですが、スクリプトで使用するために GPG を使用する完全に非対話的な方法を取得しようとしています。
答え1
ここで解決策を見つけました:https://wiki.archlinux.org/index.php/GnuPG#無人パスフレーズ
簡単に言うと、まずファイルに次の行を追加して、gpg-agent で pinentry「ループバック」モードを有効にする必要がありました~/.gnupg/gpg-agent.conf
。
allow-loopback-pinentry
次に、引数を呼び出し--pinentry-mode loopback
に追加しますgpg2