Tutoriales

Entonces use una conexión SSH con multiplexación nuevamente para mayor velocidad

H¿Cómo puedo reutilizar una conexión SSH con multiplexación para acelerar el proceso de inicio de sesión remoto con el cliente OpenSSH en Linux, macOS, * BSD y sistemas operativos similares a Unix?

Uso de multiplexación SSH en Linux o Unix para acelerar el inicio de sesión

Usted puede Reutilice la conexión al servidor remoto usando la directiva Controlmaster. Permite compartir varias sesiones a través de una sola conexión de red para agregar maestros de control según la directiva de host. Si se establece en yes, el cliente ssh escucha las conexiones en un socket de control especificado con el argumento ControlPath. Estas sesiones intentan reutilizar la conexión de red de la instancia maestra en lugar de iniciar una nueva, pero recurren a una conexión normal si el conector de control no existe o no está escuchando. Multiplexación no es más que la capacidad de enviar más de una señal a través de una sola línea o conexión. OpenSSH puede reutilizar una conexión SSH-TCP existente mediante multiplexación.

Detalles de las instrucciones
Nivel de dificultad Sencillo
Derechos de root No
requisitos OpenSSH en Linux / Unix / macOS
Horario de verano europeo. Tiempo de leer 5 minutos

¡ADVERTENCIA! Estos ejemplos requieren OpenSSH versión 4.0 o superior.

Configure la multiplexación SSH para reutilizar la conexión SSH

Abierto ~ / .ssh / config Archivo (archivo de configuración del cliente ssh). Si necesita configuraciones para todo el sistema, agregue al archivo / etc / ssh / ssh_config:
$ vi ~/.ssh/config
Agregue el siguiente código para reutilizar la conexión SSH para todos los hosts:

host *
    controlmaster auto
    controlpath /tmp/ssh-%[email protected]%h:%p

Donde,

  1. control maestro auto: Establezca Controlmaster en Auto
  2. Ruta de control / tmp / ssh-% r @% h:% p: Especifique la ruta al conector de control que se utilizará para compartir la conexión. En la ruta,% h se reemplaza por el nombre de host de destino,% p por el puerto y% r por el nombre de usuario de inicio de sesión remoto. Se recomienda que cada ControlPath utilizado para compartir conexiones oportunistas contenga al menos% h,% py% r. Esto asegura que las conexiones compartidas se identifiquen de forma única.

También puede usar cualquier host en 192.168.0.[0-9] Área de red con el siguiente patrón:

Host 192.168.0.?
    controlmaster auto
    controlpath ~/.ssh/ssh-%[email protected]%h:%p

Para cada host en el grupo de dominios «.co.in», use la conexión nuevamente:

Host *.co.in
    controlmaster auto
    controlpath ~/.ssh/private/master-%[email protected]%h:%p

Reutilice TODAS las conexiones SSH para acelerar el proceso de inicio de sesión remoto con multiplexación

Agregue a su archivo ~ / .ssh / config de esta manera:

Host *
  IdentitiesOnly yes
  ControlPath ~/.ssh/controlmasters/%[email protected]%h:%p
  ControlMaster auto
  ControlPersist yes

Si está utilizando el editor de texto vi / vim, guarde y cierre el archivo. Ahora conéctese como de costumbre con el comando ssh:
$ ssh [email protected]
La próxima vez que vuelva a conectarse, se utilizará el socket de conexión /tmp/[email protected]:22 para acelerar las cosas. No es necesario que ingrese una contraseña ni nada más. Una conexión debe estar activa para que la segunda se acelere. Esto también funciona con scp / sftp, etc.
$ scp /path/to/file.txt [email protected]:/tmp

Compare el comando ssh con y sin multiplexación

Puede comparar el tiempo que lleva ejecutar un comando en un servidor remoto lento usando el tiempo. Primero ejecute el comando time sin multiplexar (elimine las entradas del archivo ~ / .ssh / config):
$ time ssh [email protected] /path/to/command
$ time ssh -o 'ControlMaster=no' [email protected] /bin/true

Salidas de muestra:

real	0m3.546s
user	0m0.016s
sys	0m0.008s

Ahora ejecute el mismo comando con multiplexación (agregue entradas a ~ / .ssh / config):
$ time ssh [email protected] /path/to/command
$ time ssh [email protected] /bin/ture

Salidas de muestra:

real	0m0.621s
user	0m0.006s
sys	0m0.004s

¿Cómo desactivo la multiplexación para una sola sesión de comando SSH?

Ejecute el comando de la siguiente manera con ControlMaster configurado en no:
$ ssh -o 'ControlMaster=no' [email protected]

Cómo encontrar o verificar el estado de multiplexación

$ ssh -O check [email protected]
Salidas de muestra:

Master running (pid=64134)

Cómo detener las conexiones multiplex

Para apagar la multiplexación correctamente, pase el -O detente Opción de comando ssh:
$ ssh -O stop [email protected] [email protected]
Salidas de muestra:

Stop listening request sent.

Pasa el -O salida Opción para quitar el zócalo de control y terminar inmediatamente todas las conexiones existentes, ejecute:
$ ssh -O exit [email protected]@vpn.nixcraft.co.in
Salidas de muestra:

Exit request sent.

Y toda su sesión SSH terminará con el siguiente mensaje:

Shared connection to vpn.nixcraft.co.in closed.

Un ejemplo de una salida de sesión

Fig.01: Una sesión de muestra que muestra cómo reutilizar una conexión SSH para acelerar el inicio de sesión con multiplexación

Uso de la multiplexación SSH con ProxyCommand

Puede pasar por un host para llegar a otro servidor. En este ejemplo, puede acceder al host interno 10.70.203.66 a través de vpn.nixcraft.co.in:

Host internal
  HostName 10.70.203.66
  User vivek
  ProxyCommand ssh [email protected] -W %h:%p
  ControlPath ~/.ssh/controlmasters/%[email protected]%h:%p
  ControlMaster auto

Simplemente ingrese el siguiente comando para pasar por ‘vpn.nixcraft.co.in’ para llegar a otro servidor llamado ‘interno’:
$ ssh internal

Opción de saludo ControlPersist

Cuando se usa ControlPersist junto con ControlMaster, especifica que la conexión maestra debe permanecer abierta en segundo plano (esperando futuras conexiones de cliente) después de que se haya cerrado la conexión inicial de cliente. Puede configurarlo de la siguiente manera:

  1. ControlPers es no : La conexión maestra no se pone en segundo plano y se cierra tan pronto como se cierra la conexión inicial del cliente.
  2. ControlPers es sí : La conexión maestra permanece en segundo plano por tiempo indefinido (hasta que se termina o se cierra mediante un mecanismo como el). ssh -O salir de usuario @ host Oportunidad. Si se establece en sí, si se establece en un tiempo en segundos o en uno de los formatos documentados en sshd_config (5), entonces la conexión maestra en segundo plano se termina automáticamente después de que ha permanecido inactiva (sin conexiones de cliente). durante el tiempo especificado. Por ejemplo, ControlPers es de 10 m.

Aquí hay un archivo de configuración actualizado:

Host internal
  HostName 10.70.203.66
  User vivek
  ProxyCommand ssh [email protected] -W %h:%p
  ControlPath ~/.ssh/controlmasters/%[email protected]%h:%p
  ControlMaster auto
  ControlPersist yes

Una nota sobre X11, ssh-agent y reenvío de puertos

Tenga en cuenta que el reenvío de agentes X11 y ssh se admite a través de estas conexiones multiplex, pero la pantalla y el agente que pertenece a la conexión maestra se reenvían, es decir, no es posible reenviar múltiples pantallas o agentes. Sin embargo, puede crear una nueva sesión para el reenvío de puertos de la siguiente manera:
$ ssh -M -S /tmp/3001.port.forwording -L 3001:localhost:3001 -N -f [email protected]

Resumir

Ha aprendido sobre la multiplexación SSH en sistemas Linux o similares a Unix. El principal beneficio es que se necesita menos esfuerzo para crear nuevas conexiones TCP y negociar la conexión segura. Además, podemos usar este sencillo truco para acelerar nuestra sesión ssh. Revise las páginas man de ssh con el comando man:
man ssh
man ssh_config

Consulte “Ejemplos de archivos de configuración de OpenSSH para usuarios de Linux / Unix” y “Consejos de seguridad de OpenSSH” para obtener más información.


PUBLICIDAD


Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba