使用 gpg --export 和 gpg --import 交换公钥
在此步骤中,你将学习如何与他人交换公钥。要为他人加密文件,你需要他们的公钥。同样,如果有人想发送加密文件给你,他们需要你的公钥。此过程涉及将你的公钥导出到一个文件,并将你从他人那里收到的公钥导入到你的 GPG 密钥环中。
首先,让我们导出你自己的公钥。你将使用 gpg --export
命令。最佳实践是使用 --armor
选项,它会创建一个基于文本(ASCII)的密钥版本,方便复制粘贴到电子邮件或其他基于文本的通信渠道中。我们将它保存到一个名为 labex.pub
的文件中。
在你的终端中,运行以下命令。将 labex
替换为你生成密钥时使用的用户 ID。
gpg --export --armor -o labex.pub labex
你可以使用 ls
命令验证文件是否已创建:
ls
你应该在文件列表中看到 labex.pub
。你也可以查看其内容:
cat labex.pub
输出将是一段以 -----BEGIN PGP PUBLIC KEY BLOCK-----
开头的文本块。这就是你的公钥,现在你可以与他人分享了。
接下来,你将模拟接收另一个用户的公钥并将其导入到你的密钥环中。在实际场景中,你将通过安全渠道从另一个人那里收到公钥。为了本次实验,我们将创建一个临时的 Alice 密钥对,然后导出 Alice 的公钥来模拟这个过程。
首先,让我们临时生成一个 Alice 的密钥对。我们将使用批处理模式来自动化此过程,无需交互式提示:
cat > alice-key-params << 'EOF'
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Alice
Name-Email: [email protected]
Expire-Date: 2y
%no-protection
%commit
EOF
现在使用参数文件生成 Alice 的密钥对:
gpg --batch --generate-key alice-key-params
你应该会看到确认密钥生成的输出:
gpg: key <KEY_ID> marked as ultimately trusted
public and secret key created and signed.
现在将 Alice 的公钥导出到一个文件,模拟你如何从 Alice 那里收到它:
gpg --export --armor -o alice.pub [email protected]
为了本次实验演示,我们还将从密钥环中删除 Alice 的私钥,因为在现实中你只会拥有她的公钥:
gpg --delete-secret-keys [email protected]
在提示时,通过输入 y
并按 Enter
来确认删除。
gpg --delete-keys [email protected]
再次,通过输入 y
并按 Enter
来确认删除。
现在你已将 Alice 的公钥保存在 alice.pub
文件中,模拟了你如何从其他用户那里收到它。
清理临时密钥生成文件:
rm alice-key-params
现在你已将 Alice 的公钥保存在文件中,使用 gpg --import
命令将其导入到你的 GPG 密钥环中。
gpg --import alice.pub
你应该会看到确认密钥已导入的输出:
gpg: key <KEY_ID>: public key "Alice <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
为了确认 Alice 的密钥现在已在你的密钥环中,再次列出你所有的公钥。
gpg --list-keys
输出现在将同时显示你的密钥(labex
)和新导入的密钥(Alice
)。
/home/labex/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_LABEX>
uid [ultimate] labex <[email protected]>
sub rsa3072 2025-07-01 [E] [expires: 2027-07-01]
pub rsa2048 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_ALICE>
uid [ unknown] Alice <[email protected]>
sub rsa2048 2025-07-01 [E] [expires: 2027-07-01]
请注意,Alice 的密钥标记为 [ unknown]
信任。你将在下一步学习如何管理密钥信任。