gpg是一种非常通用的加密工具,可让您加密文件,加密电子邮件并验证签名文件的完整性。
创建压缩文档
在讨论创建加密的归档文件之前,让我们首先回顾如何创建压缩的tar归档文件。假设您有一个folder要归档的目录,请输入以下命令
$ tar -cvzf folder.tar.gz folder
-c标识用于创建文档,-v用于详细输出,以便我们获得视觉反馈,该反馈使我们知道情况正在发生,-z并用于压缩稳定,从而使生命周期更短。
为了稍后解压缩并解压缩此归档文件,您将输入以下命令。
$ tar -xvzf folder.tar.gz
该-x标志用于提取存档,-v用于详细提取,并-z解压缩存档。
创建一个加密的文档
现在,我们已经回顾了使用创建归档文件的方法tar,让我们看一下如何通过添加gpg混合来创建加密归档文件。您可以选择使用基于密钥的加密,基于密码的加密或两者结合使用。在“ 如何使用GPG加密和解密单个文件”一文中,我们已经介绍了使用基于密钥的加密,因此在这里我们将介绍基于密码的加密。要创建名为folder的目录的加密压缩存档,请输入以下命令。
$ tar -cvzf - folder | gpg -c > folder.tar.gz.gpg
所有tar标志都与前面的示例相同。唯一的区别是,我们没有在tar命令中为存档指定文件名,而是指定了文件名,-以便可以将tar命令的输出传递到gpg。然后,我们继续执行该操作,并且gpg的-c标志指示我们要使用对称密码(如上所述)使用对称密码对文件进行加密。最后,我们将输出重定向到一个指定的文件folder.tar.gz.gpg用>。输入此命令后,系统将提示您输入要用于加密数据的密码。如果您不喜欢这种行为,而是希望在命令中指定密码,则可以在--passphrase后面添加标志-c,如下所示。
警告
使用--passphrase在命令行上指定密码短语的安全性较差,原因有很多。它将密码保存在您的bash历史记录(或任何其他shell历史记录文件)中。另外,如果您使用的是多用户系统,则其他用户可能会看到您的密码正在检查正在运行的进程。即使您是系统的单一用户,任何能够检查当前正在运行的进程的软件都可能会记录您的密码短语。
$ tar -cvzf - folder | gpg -c --passphrase yourpassword > folder.tar.gz.gpg
为了稍后解密,解压缩和解压缩此归档文件,您将输入以下命令。
$ gpg -d folder.tar.gz.gpg | tar -xvzf -
该-d标志gpg表明我们要解密folder.tar.gz.gpg文件的内容。然后,我们将其通过管道传递到tar命令。该-x标志用于提取从gpg 传递过来的稳定,-v用于冗长的提取,-z用于解压缩该稳定,并-f -指定要传递的是未归档的文件。
创建多个单独的目录加密稳定
以上示例假定我们要基于单个目录创建一个加密的存档。如果我们有一个包含多个子目录的目录,但是我们想为每个目录创建一个单独的加密归档,该怎么办?我们可以使用bash for loop来帮助我们实现目标。只需cd进入包含您要为其创建单个归档文件的子目录的目录,然后输入以下命令。
$ for i in * ; do tar -cvzf - "$i" | gpg -c --passphrase yourpassword > "$i".tar.gpg; done
加密网络上的netcat存档传输。
在“使用Netcat的技巧和窍门”命令文章中,我们向您展示了如何使用netcat通过网络将目录从一台计算机传输到另一台计算机。在那篇文章中,我们注意到这种传输数据的方法并不安全,因为它缺乏加密。Gpg可用于为过程添加加密层。假设要从中复制存档host1的计算机具有主机名,要将数据复制到的计算机具有主机名host2,并且要传输的目录名为folder。
在以下输入 host1
$ tar -cvzf - folder | gpg -c | nc -l 6666
输入此命令后,系统将提示您输入要用于加密数据的密码。
现在,在host2输入以下命令
$ nc host1 6666 | gpg -d | tar -xvzf -
输入此命令后,系统将提示您输入在上一步中选择的密码。现在,您应该将folder目录完整包含在当前的工作目录中host2。
如果您需要通过网络复制加密的数据,则上面的示例将完成工作,但是如果将OpenSSH套件安装在系统上或您具有安装它的必要特权,则使用OpenSSH套件中的scp是更好的选择。如果情况并非如此,请随时将这个技巧放在后腰。
在本文中,我们讨论了如何制作压缩的tar归档文件,如何对其进行加密,如何创建目录的多个单独的加密归档文件,并且还学习了一种通过在管道中添加netcat来通过网络复制加密归档文件的快捷方法。如果没有其他说明,很明显,通过将这些GNU / Linux工具组合在一起,我们获得的结果要大于它们的总和。