web-dev-qa-db-ja.com

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

だから私は明らかに何か間違ったことをしていますが、私は何がわかりません。

173
user50849

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

gpg --import private.key
186
Celada

上記は部分的な回答です。完全な答えは:

gpg --import private.key
  • 出力からKEYID(例:FA0339620046E260)を指定:

    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"
    

最後に、verifyその鍵は[ultimate]ではなく[unknown]で信頼されるようになりました

gpg --list-keys
94
cmcginty

古いバージョンの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
0
Jonathan Tran