我正在寻找一个实用程序来加密 Linux 中的某些目录。我不是在寻找任何全盘加密服务,而只是为将文件存储在云中而加密一些目录。检索它们后,我必须先解密它们,然后才能访问它们。希望对几个目录(几百 GB 大小)执行此操作。有什么想法吗?最好是基于 CLI 的。
答案1
我只使用 GnuPG 来完成这项任务。文件夹首先被打包到 TAR-GZ 档案中:
tar czf files.tar.gz /path/to/my/files
如果尚未完成,您需要先创建 GPG 私钥/公钥对:
gpg --gen-key
按照说明操作。默认值应该足以满足首次测试。将出现类似以下内容:
gpg (GnuPG) 2.0.18;版权所有 (C) 2011 自由软件基金会,Inc. 这是免费软件:您可以自由更改和重新分发它。 在法律允许的范围内,不提供任何担保。 请选择您想要的钥匙类型: (1)RSA 和 RSA(默认) (2)DSA 和 Elgamal (3)DSA(仅限签名) (4)RSA(仅签名) 您的选择? 1 RSA 密钥的长度可能在 1024 到 4096 位之间。 您想要什么密钥大小? (2048) 4096 请求的密钥大小为 4096 位 请指定密钥的有效期。 0 = 密钥未过期 = 密钥将在 n 天后过期 w = 密钥将在 n 周后过期 m = 密钥将在 n 个月后过期 y = 密钥将在 n 年后过期 密钥有效期为?(0) 密钥根本没有过期 这是正确的吗? (y/N) y GnuPG 需要构建一个用户 ID 来识别您的密钥。 真实名称:文件加密密钥 电子邮件地址:[电子邮件保护] 注释:文件加密密钥 您选择了这个用户 ID: “文件加密密钥(文件加密密钥)” 更改姓名、评论、电子邮件或同意/退出?o
系统会要求您输入密钥的密码。强烈建议使用强密码。文件加密时不需要密码,所以不必担心以后的批量使用。
如果一切完成,屏幕上会出现类似这样的内容:
我们需要生成大量随机字节。执行 其他一些操作(在键盘上打字、移动鼠标、利用 磁盘)在素数生成期间;这给出了随机数 生成器有更好的机会获得足够的熵。 我们需要生成大量随机字节。执行 其他一些操作(在键盘上打字、移动鼠标、利用 磁盘)在素数生成期间;这给出了随机数 生成器有更好的机会获得足够的熵。 gpg:密钥 FE53C811 被标记为最终受信任 创建并签名公钥和私钥。 gpg:检查 trustdb gpg:需要 3 个边际,需要 1 个完成,PGP 信任模型 gpg:深度:0 有效:1 签名:0 信任:0-,0q,0n,0m,0f,1u 酒吧 *****/******** 2013-03-19 密钥指纹 = **** **** **** **** **** **** **** **** **** **** uid 文件加密密钥(文件加密密钥) 子 *****/******** 2013-03-19
现在轮到你可能想要导出公钥文件以便在其他机器上导入:
gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'
这File Encryption Key
是我在密钥生成过程中输入的名称。
现在我在新创建的档案上使用 GnuPG:
gpg --encrypt --recipient 'File Encryption Key' files.tar.gz
您现在有一个files.tar.gz.gpg
已加密的文件。
您可以使用以下命令对其进行解密(系统将要求您输入密码):
gpg --output files.tar.gz --decrypt files.tar.gz.gpg
这就是全部的魔法。
确保备份密钥!千万不要忘记密码!如果没有备份或忘记,您将会拥有数 GB 的数据垃圾!
使用以下命令备份您的私钥:
gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'
优点
- 加密器无需知道与加密有关的敏感信息 - 加密是通过公钥完成的。(您可以在本地工作站上创建密钥对,然后仅将公钥传输到您的服务器)
- 脚本文件或作业中不会出现密码
- 你可以在任何系统上安装任意数量的加密器
- 如果你保守私钥和密码的秘密,一切都会很好,而且很难被破解
- 您可以使用特定的 PGP/GPG 实现在 Unix、Windows 和 Linux 平台上使用私钥解密
- 无需对加密和解密系统有特殊权限,无需挂载,无需容器,无需特殊文件系统
答案2
就我而言,我主要使用两种方法:
第一种方法:tar 和 openssl
tar 目录
tar cvf backup.tar /path/to/folder
您可以从 tar 命令中删除 [v] 开关来关闭详细模式。
加密
openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword
您可以将 aes-128-cbc 更改为 openssl 支持的任何其他密码方法(openssl --help)。
解密
openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar
它会要求输入密码。
第二种方法:加密zip
zip -r -0 -e backup.zip /path/to/folder
它会要求输入密码。
- -r 表示递归(整个文件夹树)
- -0 表示仅存储(不压缩,速度更快)
- -e 表示加密档案
这样做的一个优点是:它将更好地与基于 Windows 的系统一起运行。
答案3
如果您不想使用公钥/私钥对加密文件,而只使用带有密码的对称加密,请使用以下命令:
gpg --symmetric --cipher-algo aes256 files.tar.gz
系统将要求您输入密码。之后files.tar.gz.gpg
将创建一个名为的加密文件。
要解密,请使用命令
gpg --decrypt files.tar.gz.gpg > files.tar.gz
答案4
为此我建议使用 FUSE 加密(例如恩夫斯) - 对于较小的数据我会使用 gpg。
它是在用户空间中实现的,因此您不需要任何特殊权限。