问题描述
我很好奇,SSH在发送/接收数据之前是否压缩了它的数据?如果它没有默认,那么它可以打开吗?
最佳解决方法
不,是的。的种类。也就是说,它支持压缩(zlib或zlib-ish,我记得),但OpenSSH的库存副本默认情况下没有启用它,虽然某些发行版可能默认启用它(我不认为Ubuntu会这样做)。
有关详细信息,请参阅man ssh_config
。您正在寻找Compression
和CompressionLevel
选项,然后您可以在/etc/ssh/ssh_config
中进行设置。
请注意,sshd_config
中的服务器端还有一个Compression
选项,用于确定是否允许压缩(默认情况下)。有关详细信息,请参阅man sshd_config
。
您还可以使用命令行选项-C
在per-session的基础上打开压缩。
请注意,如果您和服务器之间的连接速度很快(例如,在同一个LAN上,或者只是在非常好的互联网连接上),或者一方或双方的CPU速度很慢(压缩吃了一点点),压缩实际上会对性能产生轻微的负面影响。 CPU时间)。
这些天来,对于大多数人来说,我建议只在需要时使用它。通常用于小于5-10mbps的链接,并且仅在传递大量批量数据时(not-already-compressed文件的传输,X11或VNC转发,类似的事情)。
次佳解决方法
您可以在任何SSH上启用gzip压缩。将Compression yes
放入您的~/.ssh/config
,它应该工作。或者,尝试使用-C
选项运行ssh
。
第三种解决方法
从ssh手册页(键入man ssh
以查看整个内容):
-C Requests compression of all data (including stdin, stdout,
stderr, and data for forwarded X11 and TCP connections). The
compression algorithm is the same used by gzip(1), and the
“level” can be controlled by the CompressionLevel option for pro-
tocol version 1. Compression is desirable on modem lines and
other slow connections, but will only slow down things on fast
networks. The default value can be set on a host-by-host basis
in the configuration files; see the Compression option.
所以只需改变:
ssh hostname
至:
ssh -C hostname