--passphrase で GnuPG を使用するにはどうすればいいですか?

--passphrase で GnuPG を使用するにはどうすればいいですか?

gpgパスフレーズ「test」を使用して「file」というファイルを実行するスクリプトを作成したいと思います。

通常、 を使用する場合はgpg、単に実行するgpg -c fileとパスフレーズの入力を求められます。ただし、このスクリプトですべてを自動的に実行したいので、コマンドの一部としてパスフレーズを指定したいと思います。

ここで、 を使用しようとするとgpg -c file --passphrase test、次のように出力されます。

使用方法: gpg [オプション] --symmetric [ファイル名]

これは、 を使用するgpg --passphrase test --symmetric fileように要求しているように見えます。しかし、そうすると、使用するパスフレーズを要求するダイアログが表示されますが、これは私が望んでいることではありません。

引数を正しく設定するにはどうすればいいでしょうか?

答え1

GnuPG では、オプションはコマンドの前にある必要があるため、--passphraseオプションは の前に来なければなりません--symmetric

ピン入力ウィンドウに関しては、いずれにしてもポップアップ表示されます ( を使用していますが--passphrase)。おそらく、--batchと一緒に使用する必要がある GnuPG 2 を既に使用しているのでしょう--passphrase。man ページから引用します。

--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.

マルチユーザー システムでは、GnuPG の実行中に他のすべてのユーザーがコマンド ラインとパスフレーズを読み取ることができることに注意してください。--passphrase-*ファイルまたはパイプから読み取る代わりに、他のオプションのいずれかを使用することをお勧めします。

答え2

を使用すると&--pinentry-mode loopbackと連携し、ファイル名が競合した場合に新しい情報を入力できるようになります。例:--passphrase--passphrase-[file/fd]

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

--batchすぐに失敗するだろうと言っている...failed: File exists


最初に詳細オプション ( -v) を追加していた場合は、次のような表示がされるはずです。

$ 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]

-cこれは、 ( ) を最初に置くことについて何か気に入らない点があることをかなり明確に示しています--symmetric


--passphraseが伴わない限りオプションを無視する gpg2 の動作は--batchバグであると考えています。

答え3

レポートv2の場合はgpg --version、オプションを追加する必要があります--batch

構文出力に基づくと、おそらく v1 を使用していると思われます。その場合、次の操作が必要になります。

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

オプションの順序は重要ではありませんが、ファイルは最後の引数にする必要があります。

答え4

次のように使用できます:

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

また、バッチの使用はバグではなく、ドキュメントに書かれていました。ここ:

ドキュメントからのスクリーンショット

関連情報