SSH是否使用任何压缩?


44

我很好奇,SSH在发送/接收之前会压缩其数据吗?如果默认情况下未启用,则可以将其打开吗?

Answers:


48

不,是的。的种类。这就是说,它支持压缩(我记得是zlib或zlib-ish),但是OpenSSH的普通副本没有默认启用它,尽管某些发行版可能默认启用了它(我不认为Ubuntu可以做到) )。

有关man ssh_config详细信息,请参见。您正在寻找CompressionCompressionLevel选项,然后可以在中进行设置/etc/ssh/ssh_config

请注意,Compression服务器端还有一个选项,用于sshd_config确定是否允许压缩(默认情况下)。同样,请参阅man sshd_config以获取详细信息。

您还可以使用命令行选项在每个会话的基础上启用压缩-C

请注意,如果您与服务器之间的连接速度较快(例如,在同一LAN上或仅在非常好的Internet连接上),或者一侧或两侧的CPU速度较慢(压缩会吃掉相当多的带宽),则压缩实际上可能会对性能产生负面影响。 CPU时间)。

这些天,对于大多数人来说,我建议仅在需要时使用它。通常用于小于5-10mbps的链接,并且仅在传递大量批量数据(传输尚未压缩的文件,X11或VNC转发,诸如此类)时使用。


1
实际上,我想尝试使用它来加快通过SSH运行X应用程序的速度。我的服务器有大量可用的CPU和RAM资源,客户端也不是太弱。
伊万

2
sshd_config中的压缩可以是“是”或“延迟”。“延迟”更安全,因为zlib漏洞不会暴露您,因此这是默认设置,但是某些老客户端(例如Tunnelier)仅支持“是”。openssh.com/txt/release-4.2
endolith

Compression可以是yesno手册页说......还是要谢谢你,需要解压它为我的Android手机...
维尔夫

@Ivan您是否尝试过NoMachine NX或freenx?那应该比只压缩ssh更快。
gmatht

请注意,CompressionLevel该选项仅适用于SSH协议1,当前版本的OpenSSH 不再默认启用该选项。
ckujau

23

您可以在任何SSH上启用gzip压缩。放入Compression yes您的~/.ssh/config,它应该可以正常工作。或者,尝试ssh使用该-C选项运行。


8

在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

2
如果使用Windows,则可以在PuTTY中启用此选项:连接-> SSH->协议选项->启用压缩。
WUG

0

您可以使用开启压缩功能,-C但是如果不允许服务器为此使用压缩功能,那么如果服务器不允许使用内核功能,则该功能将无效。例如,由于这个原因,我确实将一些自己的数据的主机位置从Strato更改为我的服务器。我认识到它是因为使用了2Mbit的慢速下载和0,3Mbit的上载连接,并且确实根据压缩级别检查了速度差异,因为更高的级别并不总会更快,因为它消耗了处理器或服务器的功率。
但就我而言,它的工作很好,因为它可以将所需的时间缩短到之前的六分之一。


我确实会在启动网络时随时检查Settet压缩是否通过快速转换两个选项并检查时间来提高速度。最终的答案将是自动设置压缩与否。从那以后,我不必在传输任何东西之前一直检查我的连接,因为它总是可以更好地进行调整。
Andreas Bartels

0

最简单的原因是在cli上使用-o选项。它也可以与任何配置选项一起使用,例如

ssh -o "Compression no" -v <HOST>
# or
ssh -o "Compression yes" -v <HOST>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.