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