我正在执行此命令以测试来自删除服务器的连接:
ssh -l user $IP "dd if=/dev/zero count=3500 bs=1M status=progress" > /dev/null
Run Code Online (Sandbox Code Playgroud)
这显示了表单的进度报告
3145728000 bytes (3,1 GB, 2,9 GiB) copied, 276,047 s, 11,4 MB/s
Run Code Online (Sandbox Code Playgroud)
很明显,dd每秒读取 11mb。然而,已知网络带宽上限低于约 20 兆位,因此这不可能是实际接收的数据量。
iftop 在接收机器上显示大约 300 kbits 的吞吐量,这比可能的要少得多,但更现实。
问:什么是dd的进展状况实际上意味着当在管道SSH连接?接收端跟不上数据是否掉线?究竟发生了什么?
Chr*_*own 15
SSH 可以作为压缩协议运行,根据您的结果判断,它在您的发行版或配置中默认启用(或者您正在使用ssh -C)。因此,您的零流可以很好地压缩成更紧凑的东西——从您的读数来看,压缩率约为 300:最终结果约为原始大小的 0.3%。出于这个原因,它并不是测试网络速度的真正选择,因为它可能只需要很少的网络带宽就可以在接收器上产生巨大的结果。
您可以-o Compression=no在命令行上按需关闭压缩,或者通过Compression no在 SSH 客户端配置中指定来永久关闭连接。
另一种选择是使用更基本的东西,例如netcat,它不实现压缩、身份验证或类似功能,尽管出于这个原因,我通常不建议将其用于实际文件传输。