Tengo la siguiente entrada en mi .ssh/config
archivo
Host AAA
User BBB
HostName CCC
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p
Lo anterior me permite multiplexar múltiples sesiones ssh a través de la misma conexión ssh sin tener que escribir la contraseña cada vez que necesito una nueva sesión (siempre que la conexión maestra permanezca abierta).
Sin embargo, he notado que una vez que tengo un número relativamente alto de conexiones multiplexadas (~ 7), no puedo agregar más sesiones a la misma conexión multiplexada y empiezo a obtener el siguiente error:
> ssh -X AAA
mux_client_request_session: session request failed: Session open refused by peer
Password:
Mis preguntas:
¿Por qué recibo este error? ¿Hay un límite en el número de sesiones ssh que puedo multiplexar en la misma conexión? ¿Puedo cambiar ese límite? ¿Sería una mala idea?
Respuestas:
El
sshd
daemon en el servidor está limitando el número de sesiones por conexión de red. Esto está controlado por laMaxSessions
opción en/etc/ssh/sshd_config
. También esMaxStartups
posible que sea necesario aumentar la opción si utiliza una gran cantidad de sesiones. (Consulteman sshd_config
para obtener más detalles). La opción para modificar elMaxSessions
límite se ha introducido en OpenSSH 5.1 y parece que el número se fijó previamente en 10. Si excedeMaxSessions
en el servidor, verásshd[####]: error: no more sessions
en el registro del servidor.fuente
Me encontré con este problema en un servidor con una versión anterior de OpenSSH. Controlo el servidor y resolví el problema creando dos CNAME en mi configuración con nombre:
Luego, en mi configuración de cliente ssh local:
La instrucción ControlPath es para que los nombres de socket de control no se pisen entre sí.
Eso es todo, pero para facilitar la administración, escribí un script de contenedor para 'ssh' en el lado del cliente. Entiende que hay 'grupos' de hosts (en este caso realhost, realhost1, realhost2 comprenden un grupo). Al emitir 'sshwrapper realhost', si no hay canales abiertos, los tres se abren y se inicia una sesión. La próxima vez que se ejecute, cuenta las conexiones abiertas por canal y abre la nueva sesión en el canal con la menor cantidad de conexiones.
Con un host real y dos hosts 'falsos', puedo conectarme 30 veces antes de recibir un error. El inicio de sesión es extremadamente rápido, excepto que el tiempo inicial toma uno o dos segundos, ya que los tres canales de control se abren en ese momento.
fuente