秘密のgpgキーをインポートする方法(あるマシンから別のマシンにコピーされます)?


153

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]は同じです)。

だから私は明らかに何か間違ったことをしているが、何がわからない。

回答:


164

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

gpg --import private.key

また、gpg2 -e -r [ID]「このキーは指定されたユーザーのものであるという保証はありません」と言う理由をご存知でしょうか?元の質問にそれが含まれていればよかったのですが、後で気づいたのです。
user50849

1
GnuPGは、どのデータベースをどの程度信頼するかを決定するために使用する信頼データベースを保持しています。たとえば、独自のキーを最も信頼し、信頼できるキーによって直接または間接的に署名されていないキーを最も信頼します。空のデータベースにインポートした直後は、おそらくキーはまったく信頼されていません。この信頼データベースは、データベースまたはキー自体とは別なので、キーをインポートしても、すでに信頼されているキーによって署名されていない限り、キーは信頼されません。GnuPGに、どの鍵を個別に信頼したいかを教えなければなりません。
セラダ

3
@Celeda、ありがとう、-edit-keyおよびtrustコマンドを使用して、キーを信頼することができました。私の最初の質問は、あるマシンから別のマシンにキーをコピーする方法だったので、それについて何かを答えに追加するのが適切だと思います。私はあなた自身の答えを自分で編集したくないのですが、あなたはこれについて私よりも多くのことを知っているようです。
user50849

trustdbについて十分に理解しているとは思わないので、回答の中でそれについて話すことができません。私がコメントで与えたあいまいなヒントを使用して解決できたことをうれしく思います。
セラダ

わかりました、元の質問のタイトルを変更しましたので、より具体的に答えに適合します。そうすれば、trustdbに別の質問をすることができます。助けてくれてありがとう。:)
user50849

81

上記は部分的な答えにすぎません。完全な答えは:

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

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • または、以下の自動化されたコマンドを使用します。

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

最後に、検証鍵が、今で信頼されていること[ultimate]の代わりに、[unknown]

gpg --list-keys

6
これは受け入れられた答えであるはずです。より完全です。
ベンリンゼイ

これらの追加コマンドは何をしますか?
steinybot

@Steiny [unknown]ではなく[ultimate]でキーを信頼します。gpgtools.tenderapp.com/kb/faq/...
cmcginty

0

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