私は自分のOS(Ubuntu 16.04)を再インストールしました。古い.gnupgディレクトリには次のものが含まれています。
gpg-agent.conf
gpg-agent-info-<hostname>
gpg.conf
private-keys-v1.d
pubring.gpg
secring.gpg
S.gpg-agent
trustdb.gpg
古い公開鍵と秘密鍵を新しいgnupgにインポートしたいのですが。(私は、新しいgnupg2が新しいEC暗号化オプションの一部であるデータベース形式にいくつかの違いがあることを理解しているので、単に.gnupgディレクトリを新しいインストールにコピーしませんでした。)
以下は公開鍵では機能しましたが、秘密鍵では失敗しました。
gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import
後者はこう答えました:
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
新しい秘密のリングを開けないことに注意してください。ファイルにエクスポートしようとすると、同じエラーが発生します。
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc
gpg: can't open `~/.gnupg/secring.gpg' <== New Secret Keyring
gpg: WARNING: nothing exported
私の秘密鍵にはマスター鍵の秘密部分が取り除かれているため、でも同じことを試しました--export-secret-subkeys
が、応答は同じでした。エクスポート後にキーID(メールアドレス)を入力しても機能しません。一方、キーをリストすることができます:
gpg --list-keys --keyring=~/.gnupg.old/secring.gpg
gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature class=18 keyid=XXXXXXXX ts=138363647
(「キーロスト」とは、取り除かれた秘密のマスターキーを指します。)これを解決する方法を誰かに教えてもらえますか?
@Jens(以下)の助けを借りて、次のように動作します。
gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import
--no-default-keyring
して--secret-keyring
前にすることは--list-secret-keys
認識出力を生成します。だから、今持っているものを見てみましょう。