我通过执行以下命令使用 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域级密钥发现服务。
小智 21
gpg --list-secret-keysgpg --export-secret-key name > ~/my-key.ascgpg --import my-key.asc为了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 密钥。