我想从我的服务器下载一些文件到我的笔记本电脑中,问题是我希望这种通信尽可能隐秘和安全。到目前为止,我想到了使用 VPN,这样我就可以通过我的服务器重定向笔记本电脑的整个互联网流量。此外,我尝试使用 ftp 发送文件并同时观察 Wireshark。通信似乎是加密的,但是我也想加密文件本身(作为第二步安全或类似的东西)。
我的服务器是运行 Raspbian 的 RasPi。我的笔记本电脑是 Macbook Air。
我想首先加密我的 Ras Pi 中的文件,然后下载它。我怎样才能做到这一点?
答案1
您可以openssl
使用基于密钥的对称密码进行加密和解密。例如:
openssl enc -in foo.bar \
-aes-256-cbc \
-pass stdin > foo.bar.enc
这会使用 256 位加密(您可以使用开关foo.bar
来指定输出文件,而不是像上面那样重定向 stdout)foo.bar.enc
-out
AES密码输入加拿大广播公司模式。还有各种其他可用的密码(请参阅 参考资料man enc
)。然后,该命令将等待您输入密码并使用该密码生成适当的密钥。您可以使用以下命令查看密钥-p
或使用您自己的密码来代替密码-K
(实际上,它比密码稍微复杂一些,因为初始化向量或者需要来源,请man enc
再次查看)。如果使用密码,则可以使用相同的密码进行解密,无需查看或保留生成的密钥。
要解密这个:
openssl enc -in foo.bar.enc \
-d -aes-256-cbc \
-pass stdin > foo.bar
请注意-d
。另请参阅man openssl
。
答案2
对于一次性情况,您可以使用 zip 和密码进行加密。虽然不如基于密钥的技术那么强大(因为很难拥有一个好的密码),但它可能适合特殊情况。
命令行如下所示:
zip -r -0 -e encrypted_file.zip /path/to/files
-r to recurse directories.
-e to encrypt
答案3
对@goldilocks 答案进行轻微修改:
加密
openssl enc -in foo -aes-256-cbc -pbkdf2 -out foo.enc
差异:
- 通过省略参数
-pass stdin
,这将提示“输入 aes-256-cbc 加密密码:”并让您输入密码而不在控制台中显示; - 它将使用
PBKDF2
默认迭代的算法,并抑制警告“***警告:使用了已弃用的密钥派生。使用 -iter 或 -pbkdf2 会更好。”
解密
openssl enc -d -in foo.enc -aes-256-cbc -pbkdf2 -out foo.plain