Karp 的技术博客

PGP(Pretty Good Privacy)是一种广泛使用的加密技术,常用于邮件加密、签名以及身份认证等安全场景。  
本文介绍如何在 Linux 系统中使用 `gpg` 命令生成并导出 PGP 公钥,兼顾 **老版本 GnuPG** 与 **新版本 GnuPG(2.1+)**。

---

## 一、环境准备

首先确认系统已安装 GnuPG:

```bash
gpg --version

输出类似:

gpg (GnuPG) 2.0.22

如果你看到 gpg: invalid option "--quick-gen-key" 这样的报错,说明你用的是 老版本 GnuPG(如 2.0 / 1.x),该版本不支持 --quick-gen-key
本文将分别介绍两种版本的密钥生成方法。


二、老版本 GnuPG(无 --quick-gen-key

老版本(如 GnuPG 2.0 / 1.x)必须使用交互式命令:

1. 生成密钥对

gpg --gen-key

然后按提示依次输入:

  • 密钥类型:选择 1(RSA and RSA)
  • 密钥长度:建议输入 4096
  • 有效期:输入 0 表示永不过期,或 1y 表示一年
  • 姓名 / 邮箱:任意填写
  • 口令:用于保护私钥

完成后 GPG 会在本地生成一对密钥(私钥 + 公钥)。

2. 查看已生成的密钥

gpg --list-keys

输出示例:

/root/.gnupg/pubring.gpg
------------------------
pub   4096R/2C09D88D 2025-08-21
uid                  <你的名字与邮箱>
sub   4096R/CBF9B651 2025-08-21

其中:

  • 2C09D88D 是主公钥的 KEYID
  • CBF9B651 是加密子钥的 KEYID

3. 导出公钥(ASCII 装甲)

gpg --armor --export 2C09D88D > public.asc

也可以用邮箱导出:

gpg --armor --export "yourname@example.com" > public.asc

public.asc 内容如下:

-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----

此文件即可安全地发给他人,用于加密或验证签名。


三、新版本 GnuPG(2.1+)

GnuPG 2.1 及以上版本支持 --quick-gen-key 命令,一条命令即可生成密钥对。

1. 一条命令生成密钥

gpg --quick-gen-key "Your Name <yourname@example.com>" default default 0

参数说明:

  • default 表示使用默认算法(ed25519 签名 + cv25519 加密)
  • 最后一个 0 表示永不过期(也可以写成 1y 表示一年)

2. 导出公钥

gpg --armor --export yourname@example.com > public.asc

或用 --list-keys 查出 KEYID 后用 KEYID 导出:

gpg --list-keys
gpg --armor --export <KEYID> > public.asc

四、导出私钥(仅限备份)

警告:私钥必须妥善保管,绝不能泄露!

gpg --armor --export-secret-keys 2C09D88D > private.asc

private.asc 文件建议离线保存,切勿上传或发送给他人。


五、常用命令速查表

功能命令示例
生成密钥(老版本)gpg --gen-key
生成密钥(新版本)gpg --quick-gen-key "Name <Email>" default default 0
查看密钥列表gpg --list-keys
导出公钥gpg --armor --export <KEYID> > public.asc
导出私钥gpg --armor --export-secret-keys <KEYID> > private.asc
查看指纹gpg --fingerprint <KEYID>

六、结语

无论你使用的是老版本 GnuPG 还是新版本,只要掌握了 gpg --gen-keygpg --armor --export 这两步,就能顺利生成并导出符合 PGP 标准的公钥。
如果你看到 gpg: WARNING: nothing exported,说明你导出命令中用的邮箱或 KEYID 不存在,先用 --list-keys 查出正确的 KEYID 即可。

掌握这些基础命令,你就可以安全地进行邮件加密、文件签名与身份认证等操作了。

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2025年08月21日 07:15
0

目录

来自 《如何在 Linux 上生成 PGP 公钥(支持老版本 GnuPG)》