¿SSH usa alguna compresión?

45

Tengo curiosidad, ¿SSH comprime sus datos antes de enviarlos / recibirlos? Si no lo hace de forma predeterminada, ¿se puede encender?

Ivan
fuente

Respuestas:

49

No y sí. Mas o menos. Es decir, admite la compresión (zlib o zlib-ish, según recuerdo), pero una copia de stock de OpenSSH no lo tiene habilitado de forma predeterminada, aunque algunas distribuciones pueden habilitarlo de forma predeterminada (no creo que Ubuntu lo haga) )

Ver man ssh_configpara más detalles. Está buscando las opciones Compressiony CompressionLevel, que luego puede configurar /etc/ssh/ssh_config.

Tenga en cuenta que también hay una Compressionopción para el lado del servidor en la sshd_configque se determina si se permite la compresión (es por defecto). Nuevamente, vea man sshd_configpara más detalles.

También puede activar la compresión por sesión utilizando la opción de línea de comando -C.

Tenga en cuenta que la compresión en realidad puede tener un impacto ligeramente negativo en el rendimiento si la conexión entre usted y el servidor es rápida (por ejemplo, en la misma LAN o solo en conexiones de Internet realmente buenas) o uno o ambos lados tienen una CPU lenta (la compresión consume un poco del tiempo de CPU).

En estos días, para la mayoría de las personas, sugeriría usarlo solo según sea necesario. Típicamente para enlaces de menos de 5-10 mbps y solo cuando se pasan muchos datos masivos (transferencias de archivos no comprimidos, reenvío X11 o VNC, cosas así).

Nicholas Knight
fuente
1
En realidad, quiero intentar usarlo para acelerar la ejecución de aplicaciones X sobre SSH. Mi servidor tiene muchos recursos libres de CPU y RAM y el cliente tampoco es demasiado débil.
Ivan
2
La compresión en sshd_config puede ser "sí" o "demorada". "retrasado" es más seguro, ya que una vulnerabilidad zlib no lo expone, por lo que es el valor predeterminado, pero algunos clientes antiguos como Tunnelier solo admiten "sí". openssh.com/txt/release-4.2
endolith
Compressionpuede ser yeso nola página del manual dice ... Gracias de todos modos, necesitaba descomprimirlo para mi teléfono Android ...
Wilf
@Ivan ¿Has probado NoMachine NX o freenx? Eso debería ser más rápido que simplemente hacer ssh.
gmatht
Tenga en cuenta que CompressionLevelera una opción que solo estaba disponible para el protocolo SSH 1 que ya no está habilitada de forma predeterminada con las versiones actuales de OpenSSH.
ckujau
24

Puede activar la compresión gzip en cualquier SSH. Ponlo Compression yesen tu ~/.ssh/config, y debería funcionar. Alternativamente, intente ejecutar sshcon la -Copción.

evgeny
fuente
8

Desde la página de manual de ssh (escriba man sshpara ver todo):

 -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.

Así que solo cambia:

ssh hostname

a:

ssh -C hostname
rjmunro
fuente
2
Puede habilitar esta opción en PuTTY si está usando Windows: Conexión -> SSH -> Opciones de protocolo -> Habilitar compresión.
Wug
0

puede activar la compresión con, -Cpero no funcionará si no se le permite al servidor gastar la energía del kernel al no permitir la compresión para esto. Por ejemplo, debido a esto, cambié la ubicación del Host de algunos datos propios de Strato a un servidor mío. Lo reconocí por el uso de una conexión lenta de descarga de 2Mbit y de carga de 0,3Mbit y verifiqué la diferencia de velocidad según el nivel de compresión, ya que el nivel superior no siempre es más rápido, ya que consume la potencia de su procesador o la potencia del servidor.
pero en mi caso hace un buen trabajo ya que acorta el tiempo necesario a un sexto del tiempo anterior.

Andreas Bartels
fuente
Verifico por el momento siempre al iniciar la red si la compresión de Settet está ganando velocidad haciendo una transferencia rápida en ambas opciones y verificando el tiempo. La respuesta resultante es que la configuración automática de compresión o no. Desde entonces, no tengo que verificar mi conexión todo el tiempo antes de transferir algo, ya que siempre está mejor ajustado.
Andreas Bartels el
0

La razón más fácil es usar la opción -o en el cli. También se puede usar con cualquier opción de configuración, p. Ej.

ssh -o "Compression no" -v <HOST>
# or
ssh -o "Compression yes" -v <HOST>
krad
fuente