导入密钥后 GPG 公钥中缺少 uid

导入密钥后 GPG 公钥中缺少 uid

我想将我的密钥对从我当前的 Linux 机器导入到一台将替换它的新机器上。因此,我导出了密钥并将其导入到新密钥中ssh

gpg --export --secret-key -a | ssh new_machine gpg --import -a

列出新机器中的密钥会得到与旧机器上的输出相同的结果(即使使用该--list-packets选项)。

然而,两台机器的公钥列表不同;我在新机器上只得到 2 个关联的 uid,而在旧机器上有 4 个 uid:

# old machine
$ gpg -k
pub   4096R/XXXXXXXX 2020-12-31 [expires: 2022-05-31]
uid                  John Doe (John) <[email protected]>
uid                  John Doe (John) <[email protected]>
uid                  John Doe (John) <[email protected]>
uid                  John Doe (John) <[email protected]>
sub   4096R/YYYYYYYY 2020-12-31 [expires: 2022-12-31]

# new machine (after import)
$ gpg -k
pub   4096R/XXXXXXXX 2020-12-31 [expires: 2022-05-31]
uid                  John Doe (John) <[email protected]>
uid                  John Doe (John) <[email protected]>
sub   4096R/YYYYYYYY 2020-12-31 [expires: 2022-12-31]

--edit手动添加与其中之一匹配的uid丢失的,导致私钥中重复(并且相同?)uid。

因此,从导入开始,我执行相同的步骤,但也从旧机器中导出公钥并将其插入新机器中,这似乎有效。导入操作的输出是:

gpg: key XXXXXXXX: "John Doe (John) [email protected]" 2 new user IDs
gpg: key XXXXXXXX: "John Doe (John) [email protected]>" 2 new signatures
gpg: Total number processed: 1
gpg:           new user IDs: 2
gpg:         new signatures: 2
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2022-12-31

结果--list-keys与旧机器中的所有 4 个 uid 相同。

所以,我有以下问题:

  1. 我的印象是,导出密钥,然后将其导入到新商店,也会将所有关联的 uid 添加到公钥中。为什么我缺少 4 个 uid 中的 2 个?我是否忽略了最初商店中的某些内容?

  2. (取决于上面 1 的答案)导入和导出密钥对的正确方法是什么?为什么我必须单独导出/导入公钥?

PS:我的问题听起来有点像所描述的与 uid 相关的问题的相反问题这里(公钥中存在 uid,但私钥中缺少 uid)。

相关内容