我通过执行以下命令使用 GPG 生成了密钥
gpg --gen-key
现在我需要将密钥对导出到文件中;即,分别为private.pgp
和 的私钥和公钥public.pgp
。我该怎么做?
答案1
导出公钥
此命令将导出公钥的 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
这将导出恢复密钥所需的所有信息,包括信任数据库信息。确保将所有备份密钥存储在计算平台之外的安全物理位置。
如果此密钥对您很重要,我建议使用以下方法将密钥打印在纸上纸钥匙。并将纸钥匙放入防火/防水的保险箱中。
公钥服务器
一般来说,不建议将个人公钥发布到密钥服务器。密钥一旦发布就无法删除,也无法确保服务器上的密钥是由密钥的假定所有者放置在那里的。
最好将您的公钥放在您拥有或控制的网站上。有人推荐keybase.io用于分发。然而,该方法跟踪各种社会和技术社区的参与情况,这对于某些用例来说可能并不理想。
对于技术熟练的人,我个人建议尝试网络密钥域级密钥发现服务。
答案2
- 列出您拥有的密钥:
gpg --list-secret-keys
- 导出密钥:
gpg -o ~/my-key.asc --export-secret-key name
- 复制到另一台机器上;
- 导入密钥:
gpg --import my-key.asc
答案3
将export
SOMEKEYID 公钥添加到output
文件中:
gpg --output public.pgp --export SOMEKEYID
使用秘密密钥时,通常最好不要将它们写入文件,而是使用 SSH 仅使用gpg
管道在计算机之间直接复制它们:
gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import
但是,如果您必须将密钥输出到文件中,请确保它已加密。以下是如何使用 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
如果您想要创建公钥和私钥的物理备份,以防止在没有其他方法可以重新访问密钥时发生磁盘故障,则最后一种方法是理想的选择。
笔记:如果您只有私钥的副本,但没有公钥,则可以通过重新导入私钥、信任它,然后重新导出来恢复您的公钥。
看私下移动 GPG 密钥出于额外考虑。
答案4
“GnuPG(又名 PGP/GPG)” 更多信息
生成密钥:
gpg --gen-key
查看所有键:
gpg --list-keys
导出公钥:
gpg --export -a --output [path-to-public-key].asc [email-address]
导出秘钥:
gpg -a --export-secret-keys > [path-to-secret-key].asc