我正在寻找一个合适的程序来将文件从一台 Linux 机器复制到另一台机器。该程序应该能够进行身份验证,但不应该进行加密。后者的原因是缺乏进行加密的 CPU 能力。
我同时将大约 70 台机器的备份复制到一台备份服务器。这台服务器是 HP Proliant DL360 G7,具有 10 Gbps 以太网连接和可以达到 4 Gbps 的 FC 存储后端。通过 FTP,我可以以大约 400MB/秒的速度向存储写入数据(这就是我想要的),但通过 arcfour 的 ssh,我只能以大约 100MB/秒的速度写入数据,同时 CPU 使用率为 100%。这就是我希望文件传输不加密的原因。
我发现不太合适的替代方案:
- rcp:没有身份验证,算了吧
- FTP:使身份验证“安全”(至少可以防止纯文本密码交换)是可能的,但并不容易,而且我还没有找到强制任何 FTP 守护进程加密控制通道(用于身份验证)而不加密数据通道(用于数据传输)的方法
- SCP/SFTP:在最近的 ssh(d) 实现中,您无法关闭加密。您能做的最好的事情就是使用 arcfour 密码进行加密,但它仍然占用太多 CPU 能力,不符合我的需要。
- 通过 ssh 进行 rsync:与 SCP/SFTP 存在同样的问题。
- 普通 rsync:来自 rsyncd 的文档:“rsync 中使用的身份验证协议是基于 128 位 MD4 的质询响应系统。不过,这是相当薄弱的保护措施(至少有一种公开的暴力哈希查找算法),因此,如果您想要真正高质量的安全性,那么我建议您通过 ssh 运行 rsync。”这是不行的。
是否存在一个协议/程序可以完全满足我的要求?
(如果它也可以在 Windows 上运行,或者支持 rsync 风格的复制/同步(例如,仅复制差异部分),那将是一个很大的优点。)
答案1
您尝试做我通常做的事情,使用较低权重的加密算法(如arcfour
)。当这成为瓶颈时,我使用的下一个方法是完全禁用 ssh 加密。
一种方法是使用hpn-ssh作为您的传输。我通常的应用是跨高带宽、长距离链路(例如芝加哥和纽约之间的 10GbE 链路,延迟为 16ms)进行 SSH 复制。hpn-ssh 允许在那里调整 TCP 窗口,但也可以选项完全禁用加密。这可能对你的情况有帮助。
另请参阅:为什么我的 rsync 这么慢?
答案2
我想到了一些快速修复选项:
- 错开您的备份,以便它们不会同时运行。
- 将 ssh 替换为hpn-ssh(在服务器和所有 70 台机器上)并使用其 NONE 密码,在身份验证完成后关闭加密。
答案3
Apache2 端的 WebDAV + 身份验证听起来是个不错的选择 :-)