web-dev-qa-db-ja.com

gpg復号化は秘密鍵エラーなしで失敗します

.dat.pgpファイルを復号化するためのパスフレーズとして使用されるgpg .keyファイルがあります。暗号化された.data.pgpファイルは、次のコマンドを使用して、同じ.keyファイルで1つのサーバーで正常に復号化されます

cat xxx_gpg.key | /usr/bin/gpg --batch --quiet -o xxx.dat --passphrase-fd O -d xxx.dat.pgp

しかし、同じキーを別のサーバーxxx_gpg.keyに移動し、上記の同じコマンドを実行すると、次のエラーが発生します-

gpg: decryption failed: No secret key

編集:

gpg --list-secret-keysは、サーバー上の一部のデータを返しますが、他のサーバーでは結果が返されません。

秘密鍵を設定するにはどうすればよいですか

28
fortm

秘密鍵が他のマシンにないように見えるため、正しいパスフレーズ(ファイルから読み取った)でも機能しません。

これらのオプションは動作するはずです

  • キーリングを他のマシンにコピーします(秘密キーリングのみが必要な場合がありますが、パブリックリングはパブリックです)。
  • または、秘密鍵をエクスポートしてから他のマシンにインポートします

man gpgの便利な外観オプション:

--export
すべてのキーリング(デフォルトのキーリングとオプション--keyringを介して登録されたキーリング)、または少なくとも1つの名前が指定されている場合は指定された名前のキーリングからすべてのキーをエクスポートします。新しいキーリングは、STDOUTまたはオプション--outputで指定されたファイルに書き込まれます。これらのキーをメールで送信するには、--armorと一緒に使用します。

--export-secret-keys
--exportと同じですが、代わりに秘密鍵をエクスポートします。

--import
--fast-import
キーのインポート/マージ。これにより、指定されたキーがキーリングに追加されます。現在、高速バージョンは単なる同義語です。

そして多分

--keyring file
キーリングの現在のリストにファイルを追加します。ファイルがチルダとスラッシュで始まる場合、これらは$ HOMEディレクトリに置き換えられます。ファイル名にスラッシュが含まれていない場合、GnuPGホームディレクトリにあると見なされます(--homedirまたは$ GNUPGHOMEが使用されていない場合は「〜/ .gnupg」)。

これにより、現在のリストにキーリングが追加されることに注意してください。指定されたキーリングのみを使用する場合は、--keyringとともに--no-default-keyringを使用します。

--secret-keyring file
--keyringと同じですが、秘密鍵リング用です。

17
Xen2050

Arch Linuxのgpg CLIでこの問題に遭遇しました。既存の「gpg-agent」プロセスを強制終了する必要があり、すべてが正常に戻りました(新しいgpg-agentが自動起動されます; ...)。

30
Victoria Stuart

GPG 2.xがインストールされているシステム上の別のユーザーにsu- edしている間にシークレットを復号化しようとすると、このエラーが発生することがあります。 このバグはRHEL 6に対して報告されています しかし、利用可能な修正はありません。どうやらこれはGPG 2.xでのいくつかの設計決定によるものです。バグレポートで提案されている回避策の1つは、tmuxまたはscreenセッション内で復号化を実行することです。 詳細はこちら

1
jayhendren