如何将 GPG 私钥和公钥导出到文件

roc*_*cky 112 gpg pgp openpgp

我通过执行以下命令使用 GPG 生成了密钥

gpg --gen-key
Run Code Online (Sandbox Code Playgroud)

现在我需要将密钥对导出到一个文件中;即分别是private.pgp和 的私钥和公钥public.pgp。我该怎么做?

Rub*_*amp 177

导出公钥

此命令将导出公钥的 ASCII 装甲版本:

gpg --output public.pgp --armor --export username@email

导出密钥

此命令将导出密钥的 ASCII 装甲版本:

gpg --output private.pgp --armor --export-secret-key username@email


安全问题、备份和存储

PGP 公钥包含有关一个人的电子邮件地址的信息。这通常是可以接受的,因为公钥用于加密发送到您地址的电子邮件。然而,在某些情况下,这是不可取的。

对于大多数用例,不需要导出密钥,也不应该分发密钥。如果目的是创建备份密钥,则应使用备份选项:

gpg --output backupkeys.pgp --armor --export-secret-keys --export-options export-backup user@email

这将导出所有必要的信息以恢复密钥,包括信任数据库信息。确保将所有备份密钥存储在计算平台之外并存储在安全的物理位置。

如果此密钥对您很重要,我建议使用paperkey将密钥打印在纸上。并将纸质钥匙放在防火/防水保险箱中。

公钥服务器

通常,不建议将个人公钥发布到密钥服务器。没有任何方法可以在密钥发布后将其删除,也没有方法确保服务器上的密钥由假定的密钥所有者放置在那里。

最好将您的公钥放在您拥有或控制的网站上。有些人推荐keybase.io进行分发。但是,该方法会跟踪各种社会和技术社区的参与情况,这对于某些用例来说可能并不理想。

对于技术娴熟的人,我个人建议尝试使用webkey域级密钥发现服务。

  • 导出的密钥(第二个命令)是否已加密,或者我是否需要自己对其进行加密,然后才能将其存储到 USB 驱动器上? (4认同)
  • @Julian ...导出的密钥与导出的密钥具有相同的保护。如果有密码短语,则需要密码短语才能导入密钥。 (2认同)
  • @OMGtechy 您是如何尝试恢复密钥的?我可以通过 `gpg --import-options restore --import backupkeys.pgp` 恢复公钥,但是如果 backupkeys.pgp 是由 `gpg --output backupkeys.pgp 创建的,那么这不会恢复秘密密钥,只能恢复公共密钥。 --armor --export --export-options 导出备份`。其中“--armor”不是必需的,“export-backup”可以用“backup”替换。 (2认同)
  • 请注意,Keybase 此后已被 Zoom 收购,Zoom 与中国关系非常密切。 (2认同)

小智 21

  • 列出您拥有的密钥: gpg --list-secret-keys
  • 导出密钥: gpg --export-secret-key name > ~/my-key.asc
  • 复制到另一台机器上;
  • 导入密钥: gpg --import my-key.asc

  • 请注意,`.asc` 代表 ASCII,但 `gpg --list-secret-keys` 的输出是二进制的。 (7认同)
  • 实际上,.asc 代表“ASCII 装甲”,输出是加密文本。您可以安全地捕捉它并亲眼看看。另外,像大多数 Linux 文件一样,文件扩展名也是任意的,从技术上讲不必是 asc。@维航健 (5认同)

Jos*_*das 8

为了exportSOMEKEYID公钥的output文件:

gpg --output public.pgp --export SOMEKEYID
Run Code Online (Sandbox Code Playgroud)

使用密钥时,通常最好不要将它们写入文件,而是使用 SSH 在仅gpg使用管道和管道的机器之间直接复制它们:

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import
Run Code Online (Sandbox Code Playgroud)

但是,如果您必须将您的密钥输出到文件中,请确保它已加密。以下是使用Dark Otter 方法使用 AES 加密来实现的方法

gpg --output public.gpg --export SOMEKEYID && \
gpg --output - --export-secret-key SOMEKEYID |\
    cat public.gpg - |\
    gpg --armor --output keys.asc --symmetric --cipher-algo AES256
Run Code Online (Sandbox Code Playgroud)

如果您想创建公钥和私钥的物理备份以防止在没有其他方法可以重新获得对密钥的访问权时发生磁盘故障,则最后一种方法是理想的。

有关其他注意事项,请参阅私下移动 GPG 密钥