{ :el => 'bar', :de => 'foo' }

software-craftsman@argentine:~$ gem unpack weblog

Incremento de performance de conecciones SSH a un mismo server

Gracias a que las modernas implementaciones de OpenSSH tienen la capacidades de multiplexar sus conexiones, es que podemos configurar nuestro cliente ssh para que haga uso de estas capacidades y tenga el sigueinte comportamiento.

Cuando nos conectemos a un servidor, el mismo comprobará que ya no estemos conectados a dicho servidor en otra terminal en nuestra maquina. Si esta comprobación le da negativa(primera vez que nos conectamos al dicho server), establecerá la conexion tal y como se lo hemos pedido, pero aparte generará un sock file en cuyo nombre identificara el usuario, el servidor y el puerto al que nos hemos conectado, dejando disponible para futuras conexiones a este mismo server con el mismo usuario en el mismo puerto, actuando como una master conection.

Mientras que esta primera coneccion siga abierta, el archivo del sock conection permanecera en disco, permitiendo que este sea usado por otras conexiones al mismo server, optimizando asi la velocidad en el establecimiento de la coneccion con dicho servidor y la coneccion en si misma.

La configuracion debe agregarse como toda configuracion de nuestro cliente de ssh en el archivo de configuracion del mismo. ~/.ssh/config que puede no existir, ya que no viene por default. En caso de que no lo tengamos, lo crearemos nosotros mismos, ya que es un mero archivo de texto. La unica salvedad que tenemos que tener son sus permisos los cuales deben ser 0600 o sea solo lecto-exritura para el owner del archivo.

Una forma sencilla de generar este archivo con estos permisos seria:

1
2
touch ~/.ssh/config
chmod 0600 ~/.ssh/config

en su interior debemos poner esto:

~/.ssh/config
1
2
3
Host *
  ControlMaster auto
  ControlPath ~/.ssh/master-%r@%h:%p

esto es todo.

A partir de ahora ya tendrá el comportamiendo antes descrito. El que podemos corroborar estableciendo mas de una vez una conección a un servidor.

Ejemplo:

  • Primera Conección
1
ssh someserver
  • Segunda conección en modo verbose (-v), para que puedan ver la reutilizacion.
1
ssh -v someserver

Dato anecdótico (si bien resulta lógico, creo que esta bueno resaltarlo) es que si cerramos la primera conección que abrimos(o sea la master, la que usan las demas conección secundarias que abrimos) el logout quedara pendiente y solo terminará de lograrse cuando hallamos cerrado la ultima conección secundaria y no haya ninguna otra conección secundaria contra este servidor.

Otro tip a tener en cuenta de que está andando sin tener que entrar en modo verbose (-v), es notar que en las conección secundarias no aparece el motd (mensaje de bienvenida), solo aparece el mensage del Last Login