秘密のGPGキーを取得する方法(あるコンピュータから別のコンピュータにコピー)?

秘密のGPGキーを取得する方法(あるコンピュータから別のコンピュータにコピー)?

あるコンピュータから別のコンピュータにGPGキーをコピーしようとしています。

私は以下が欲しい:

gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key

ファイルを新しいコンピュータに移動したら、次の手順を実行します。

gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)

gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]

私が見るにはすべてが大丈夫に見えますが、

$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible

したがって、エラーメッセージはファイルが[SUB-ID]で暗号化されたことを示し、キーインポートはそのファイルをインポートしたことを示します。 ([SUB-ID] は両方のメッセージと同じです。)

それで明らかに何か間違っているようですが、何かはわかりません。

答え1

--importインポートした秘密鍵をコマンドラインに追加する必要があります。 (このフラグを使用する必要はありません--allow-secret-key-import。マニュアルページによると、「これは廃止されたオプションであり、どこにも使用されません」)

gpg --import private.key

答え2

これは答えのほんの一部です。完全な答えは次のとおりです。

gpg --import private.key
  • FA0339620046E260出力にKEYIDが与えられた場合(例えば):

      gpg --edit-key {KEY} trust quit
      # enter 5<RETURN> (I trust ultimately)
      # enter y<RETURN> (Really set this key to ultimate trust - Yes)
    
  • または、次の自動コマンドを使用します。

      expect -c 'spawn gpg --edit-key {KEY} trust quit; send "5\ry\r"; expect eof'
    

ついに、確認するこれで、キーが[ultimate]代わりに信頼されます。[unknown]

gpg --list-keys

答え3

以前のバージョンのgpgを含むバックアップからインポートしています。古いコンピュータが利用できず、バックアップのみがあるため、最初にエクスポートすることはできません。これは私にとって効果的です。

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

--batchパスワードをすぐに入力せずにキーを取得するには、このオプションを使用します。

公開鍵の確認:

gpg --list-keys

キーを確認するには:

gpg --list-secret-keys

関連情報