备份GPG和SSH密钥的最安全方法是...

在Ubuntu 14.10中,我生成了一对公钥和私钥的GPG和SSH密钥,但现在我需要重新安装系统,不想丢失这些密钥,也不只是把它们保存为文本文件放在USB上。
那么,最安全的备份方法是什么?
有没有办法加密导出的密钥文件或类似的操作?

我建议您使用Ubuntu的压缩归档管理器选项来创建加密归档。在这里查看命令行操作(http://askubuntu.com/a/343297/367990)或者在这里查看图形界面操作(http://askubuntu.com/a/17670/367990)。我知道您,您晚上无法安心睡觉如果使用弱加密方式,所以请避免使用_zip_格式,而是使用_7z_格式,它还可以对文件列表进行加密。 - Byte Commander
2个回答

这是我备份安全数据的方法。我假设你使用ssh密钥,并且对命令行操作感到熟悉。
1. 将所有密钥移动到一个文件夹中。 2. 创建该文件夹的tar归档文件。使用命令tar -cf keys.tar /path/to/keys/folder。 3. 然后,使用OpenSSL加密tar文件,命令如下:openssl aes-256-cbc -a -in keys.tar -out keys.tar.aes,并设置一个安全密码。 4. 现在,所有密钥都被加密在一个.aes文件中。你可以安全地将其移动到备份设备上。 5. 当你准备打开文件时,运行命令openssl aes-256-cbc -d -in keys.tar.aes -out keys.tar进行解密。然后使用tar -xvf keys.tar提取tar归档文件。

运行第三个命令时,我遇到了这个错误:错误信息 - user364819
编辑:看起来您的系统上没有aes-256选项。请尝试使用aes-256-cbc代替。 - John Cave
1我对OpenSSL或其enc命令没有听到好的评价。这是一个非标准且未经充分验证的结构!“迭代次数”由enc命令设置为1,无法更改!这相当脆弱!根据有关斯诺登文件的评论以及GPG几十年的使用经验,GPG似乎是一个更好的选择。而且,gpg与tar的管道配合得很好,因此您也不会在旧/已删除的tar文件中留下未加密的数据。 - Xen2050
感谢你的回复,@Xen2050。上述步骤是我备份服务器的方法。我会进一步阅读你提供的链接,并可能更改我的备份方案。 - John Cave

你的GPG秘钥环已经加密,尽管它的强度取决于你的密码短语(这对任何加密都是如此)。

我会将你想要备份的所有文件制作成tar文件(可以列出一些文件夹/文件来制作tar文件,或者使用-T, --files-from从文件中获取要提取或创建的名称),然后将tar的输出传输给GPG。基本上:

tar -c folder | gpg --output archive.tar.gpg -e

但要小心,不要用你的秘密密钥加密你唯一的副本...也就是说,不要把你的保险柜钥匙锁在保险柜里。传统(仅使用密码短语)加密也可以使用:
tar -cz --files-from=addthese.txt | gpg --cipher-algo AES256 -z 0 --output archive.tar.gz.gpg -c 

这样可以避免制作任何额外的未加密数据副本,如果有需要的话,你将不得不找到并清除它们(或者清除所有的空闲空间)。任何使用标准输出的程序也可以通过管道传输到gpg中,以防备份的不仅仅是普通文件。