Límites de multiplexación SSH


26

Tengo la siguiente entrada en mi .ssh/configarchivo

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?


2
No puedo responder las preguntas directamente, pero puedo ofrecer algunas sugerencias para localizar el problema. Como el compañero rechazó la conexión, comenzaría mirando los registros del sistema al que se está conectando. Vea si sshd da algún error. Si no, aumente LogLevel e intente nuevamente. Si encuentra un mensaje de registro que no es inmediatamente obvio y la búsqueda de la frase no ayuda, puede usar grep en el código fuente. Los mensajes de error con frecuencia están rodeados de conjuntos de condiciones: uno (o algunos) de ellos no se cumplieron, y es por eso que apareció este mensaje.
Shawn J. Goff

Respuestas:


26

El sshddaemon en el servidor está limitando el número de sesiones por conexión de red. Esto está controlado por la MaxSessionsopción en /etc/ssh/sshd_config. También es MaxStartupsposible que sea necesario aumentar la opción si utiliza una gran cantidad de sesiones. (Consulte man sshd_configpara obtener más detalles). La opción para modificar el MaxSessionslímite se ha introducido en OpenSSH 5.1 y parece que el número se fijó previamente en 10. Si excede MaxSessionsen el servidor, verá sshd[####]: error: no more sessionsen el registro del servidor.


4

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:

realhost.myexample.com.      IN  A       XXX.XXX.XXX.XXX
realhost2.myexample.com.     IN  CNAME   realhost.myexample.com.
realhost3.myexample.com.     IN  CNAME   realhost.myexample.com.

Luego, en mi configuración de cliente ssh local:

ControlMaster auto
ControlPath ~/.ssh/%r_%p_%h

host realhost
hostname realhost.myexample.com

host realhost2
hostname realhost2.myexample.com

host realhost3
hostname realhost3.myexample.com

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.


El guión suena como un verdadero ahorro de tiempo y sería realmente útil. Si todavía lo tiene, ¿le importaría compartirlo con el público?
thefourtheye

No estoy seguro de que sea apropiado aquí, ya que no es la respuesta a una pregunta. Además, lo escribí para mí y se ejecuta en un cliente Mac (para iniciar sesión en mis servidores Linux). El código analiza la salida 'ps' y necesitaría ser cambiado para ejecutarse en Linux, debido a la sintaxis 'ps' diferente.
Joe

Lo suficientemente justo. Gracias por compartir la idea general.
thefourtheye

Coloqué el script en moosiefinance.com:8081/sshm.zip.
Joe

Impresionante ... Muchas gracias ... Déjame pasar por eso
thefourtheye
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.