Multiplexado de Conexiones con SSH

Las versiones de OpenSSH posteriores a la 3.9 permiten que varias sesiones SSH compartan la misma conexión. Compartir la conexión significa que los procesos de establecimiento de la conexión TCP/IP, intercambio de claves, autentificación, negociación del tipo de cifrado, etc. se realizan sólamente durante la primera conexión a una máquina. Ello aumenta la eficiencia de las sucesivas conexiones a la misma máquina. Cuando se establece la primera sesión - denominada maestra - se crea un socket unix en el cliente. Las subsiguientes sesiones a la misma máquina se conectan a la sesión maestra usando el socket unix. La sesión maestra crea entonces una nueva conexión dentro de la sesión que es utilizada por el cliente SSH.

Para activar la compartición de la conexión ponemos las siguietnes líneas en nuestro fichero de configuración:

/.ssh$ head -4 config
Host *
  ControlMaster auto
  ControlPath /home/lusasoft/.ssh/sockets/%r@%h:%p

El valor auto para la opción ControlMaster le indica al cliente SSH que si ya existe un socket disponible se reutilice. En caso contrario se crea uno nuevo.

La opción ControlPath define el camino en el que se guardará dicho socket asi como localizarlo para su reutilización por las posteriores conexiones. La cadena de formato %r@%h:%p especifica el formato del nombre del socket. Así, después de una conexión SSH el directorio sockets contiene:

~/.ssh$ ls -ltr sockets/
total 0
srw------- 1 lusasoft lusasoft 0 2009-06-25 22:10 user@some.machine.ull.es:22

Por supuesto, el primer paso es crear el camino:

~/.ssh$ mkdir -m 700 ~/.ssh/sockets/

Podemos ver la mejora. En una terminal controlamos el tiemppo de ejecutar un comando remoto:

$ time ssh europa echo Hola!
Hola!

real    0m1.280s
user    0m0.008s
sys     0m0.004s
Ahora abrimos una conexión SSH con la máquina:
$ ssh europa
Linux europa 2.6.24-24-generic #1 SMP Wed Apr 15 15:11:35 UTC 2009 x86_64
casiano@europa:~$
Ahora en otra terminal volvemos a cronometrar la ejecución del comando remoto anterior:

$ time ssh europa echo Hola!
Hola!

real    0m0.197s
user    0m0.004s
sys     0m0.004s
Vemos que el tiempo ha disminuido.

Consideraciones



Subsecciones
Casiano Rodríguez León
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19