GnuPGを--passphraseで使用するには?


11

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

通常、を使用するとgpg、通常は実行するだけでgpg -c fileパスフレーズを要求されます。しかし、このスクリプトがすべてを独自に実行するようにしたいので、コマンドの一部としてパスフレーズを提供したいと思います。

今私が使用しようとすると:gpg -c file --passphrase test、それは出力します:

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

どの継ぎ目が私に使ってもらいたいのかgpg --passphrase test --symmetric file。しかし、それを行うと、パスフレーズを使用するように求めるダイアログがポップアップ表示されます。これは私が望むものではありません。

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

回答:


7

GnuPGでは、オプションはコマンドに先行--passphraseする必要があるため、オプションはの前に置く必要があります--symmetric

とにかくポップアップするピンエントリウィンドウに関しては(を使用しますが--passphrase)、おそらく既にGnuPG 2を使用しているため--batch、と一緒に使用する必要があります--passphrase。マニュアルページから:

--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-*代わりに、ファイルまたはパイプから読み取るには、他のオプションのいずれかを使用することをお勧めします。


あなたが言っていることは、私の--passphrase--symmetric引数の順序は実際には正しいということですが、私は--batch引数を見逃していただけですか?それは私にはうまくいきませんでした。念のため--batch、前と後の両方を追加しようとしました。また、私が使用しているものがGPG 2であるかどうかを確認する方法はありNote that this passphrase is only used if the option --batch has also been given.ませんが、貼り付けたと言う部分が私のmanページに存在しません。

どのオペレーティングシステム/ディストリビューションを使用していますか?gpg --version使用しているGnuPGのバージョンに関する情報が表示されます。あなたが持っていますかgpg2バイナリか?
Jens Erat

Xubuntu 14.04を使用しています。バージョンgpgは1.4.16です。あなたのコメントに触発されて、私はgpg2が個別に開発されていることを知ったので、それをインストールして試してみましたが、それは不平を言いますno valid OpenPGP data found. processing message failed: Unknown system error

イェンスはすごく素晴らしくて、たくさんの質問に答えて素晴らしい答えを出しますが、「オプションはコマンドの前に置く必要があるため、-passphraseオプションは--symmetricの前に置く必要があります」と間違っています。まったく当てはまりません。
rsaw

@rsaw:あなたは部分的に正しいです- --symmetric--passphraseのため、順序は関連がないようですが、後で--export定義してみてください--armor。通常、オプションはコマンドの前になければなりません。これは、マニュアルページで定義されている順序でもあります。
Jens Erat

2

gpg --versionv2を報告する場合は、--batchオプションを追加する必要があります。

構文出力に基づいて、おそらくv1を使用している場合は、次のようにします。

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

オプションの順序は重要ではないことに注意してください。ただし、すべてのファイルを最後の引数にする必要があります。


1

を使用--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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.