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