
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?
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-%r@%h:%p
Donde,
- control maestro auto: Establezca Controlmaster en Auto
- 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-%r@%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-%r@%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/%r@%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 vivek@ [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 vivek@[email protected]
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/%r@%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:
- 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.
- 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/%r@%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