1. ホーム
  2. gnupg

[解決済み] パスフレーズが正しいことを確認するためのgpgコマンドラインの使用方法

2022-05-14 15:59:19

質問

でバックアップを自動化しようとしています。 duplicity でバックアップを自動化しようとしていますが、結果をテストすると

gpg: 公開鍵の復号化に失敗しました: 不正なパスフレーズです。

使用しているパスフレーズが、対応するgpg秘密鍵に関連付けられたパスフレーズであるかどうかを確認したいのですが、gpgコマンドラインオプションに、"何も暗号化または復号化しないでください、と記述する方法が見当たりません。ただ、正しいパスフレーズを使用していることを確認するだけです。

このことから、私は Gnu Privacy Guard を (またもや) 誤解していることがわかります。 Gnu Privacy Guard を誤解しているのかもしれません。 (それは、私が泣くまで私を愚弄する傾向があります)。

パスフレーズを検証するためにgpgに依頼することは意味があるのでしょうか? もしそうなら、どのように?

どのように解決するのですか?

組み込みの方法はありませんが、何も変更せず、パスフレーズを確認するだけのテストを作成するのは簡単です。

指定されていないので、GnuPG の v2 未満のバージョンを使用しており、コマンドライン インタープリタに Bash を使用している Linux であると仮定します。

ここでコマンドを与え、以下に各パーツが何をするのかを説明します - (注:以下はGnuPGシリーズv1の場合です。GnuPGシリーズv2の場合は以下を参照してください)

echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

これは、まず、GnuPG に署名するテキストをパイプし echo "1234" | - これは単なるテストなので、無駄なテキストに署名することになります。

次に、キーエージェントを使用しないようにgpgに --no-use-agent キーエージェントによっては、成功時に "0" を返さないかもしれないため、これは後で重要なことです。

次に、gpgに署名されたデータを直接 /dev/null ファイルに直接入れるよう gpg に指示します。つまり、それを破棄し、結果を端末に書き込まないようにします。Windows では、署名されたデータを画面に書き出すために、単に -o /dev/null の部分を省略する必要があるかもしれません。

次に、テストを行いたいキーを --local-user 012345 . KeyID を使って最大限の特定をするか、ユーザー名を使うか、どちらかニーズに合ったほうを選びます。

次に -as を指定すると、ASCII出力モードが有効になり、署名のためのコンテキストモードが設定されます。この - はGnuPGに標準入力から署名するデータを取得するように指示するだけです。 echo "1234" | .

そして最後に && echo "A message that indicates success" -- は、前のコマンドが成功した場合、このメッセージを表示することを意味します。これは、上記のコマンドの成功がそうでなければ全く出力されないことを示すため、分かりやすくするために追加しただけです。

何が起こっているのか、そしてどのようにそれを使ってあなたがやりたいテストを行うことができるのか、十分理解していただけたと思います。もし、不明瞭な部分や理解できない部分があれば、喜んで説明させていただきます。 幸運を祈ります。

[EDIT] - GnuPG v2を使用している場合、上記のコマンドは次のように少し修正する必要があります。

echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"

なぜなら、GnuPG v2 はパスフレーズがエージェント経由で取得されることを想定しているので、エージェントの使用を無効にするために --no-use-agent その代わりに、GnuPG v2 にバッチプロセスを実行し、 STDIN (標準入力) からパスフレーズを取得したいことを伝えるために、 オプション --passphrase-fd 1 .