我正在尝试将我的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


评论


您是否也有可能知道gpg2 -e -r [ID]为什么说“无法保证此密钥属于指定用户”?我希望我已将其包含在原始问题中,但直到后来我才注意到。

–user50849
15年2月16日在7:54

GnuPG维护一个信任数据库,该数据库用来决定信任多少密钥。例如,最信任自己的密钥,最不信任任何未直接或间接签名的密钥。刚导入到空数据库后,可能根本没有密钥是可信任的。此信任数据库与数据库或密钥本身是分开的,因此导入密钥不会使它们成为可信的,除非它们已由某些已经信任的密钥签名。您必须告诉GnuPG您要分别信任的密钥。

–塞拉达
15年2月16日在9:19

@Celeda,谢谢,使用--edit-key和trust命令,我设法使密钥可信。由于我最初的问题是如何将密钥从一台机器复制到另一台机器,因此我认为在您的答案中添加一些相关内容是适当的。我不希望自己编辑您的答案,而且您似乎比我更了解这一点。

–user50849
15年2月16日在10:05

我觉得我不太了解trustdb,无法在我的答案中谈论它。我很高兴您能够使用我在评论中给出的模糊提示来解决问题。

–塞拉达
15年2月16日在11:53

好的,我已经为原始问题重新命名,所以它更适合答案。这样,我可以问一个单独的问题trustdb。谢谢您的帮助。 :)

–user50849
15年2月16日在16:07

#2 楼

以上只是部分答案。完整的答案是:

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"



最后,请验证密钥现在已被[ultimate]信任的[unknown]

gpg --list-keys


评论


这应该是公认的答案。更完整。

–本·林赛(Ben Lindsay)
17年12月15日在15:26

这些额外的命令做什么?

–steinybot
18年8月26日在7:24

@Steiny使密钥由[最终]而不是[未知]信任。 gpgtools.tenderapp.com/kb/faq/…

–cmcginty
18-10-24在19:22



#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