Por lo que puedo decir, este es un error en WSL. Con suerte, Microsoft lo solucionará en la próxima versión. Pero por ahora, podemos usar este truco un poco feo.
Actualización n. ° 1 : Definitivamente un error. Encontré este problema en Github. Su solución alternativa para relanzar el shell también funciona para mí si no quieres pasar por todo esto.
TL; DR Agregue esto para FINALIZAR su configuración SSH (generalmente ubicada en ~/.ssh/config
):
Host *
ProxyCommand nc %h %p %r
He aquí por qué funciona: Nuestro tema SSH no es un problema de cortafuegos ya nc
y telnet
trabajo al mismo host y el puerto (intenta telnet <host> <port>
o nc <host> <port>
: usted debe ver algo así SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Esto lo podemos usar para nuestra ventaja.
SSH permite el uso de proxies que toman la entrada estándar y la envían al puerto del servidor a través de la ProxyCommand
opción. Esto normalmente se usa para hacer un túnel en las redes a un host protegido mediante el uso de un servidor SSH de bastión intermedio, a veces llamado host de salto (consulte este enlace para obtener más información).
Este truco le dice a SSH que use un proxy sin host (s) de salto. Por lo tanto, evita la asignación fallida de SSH de recursos TCP al insertar toda la asignación de recursos de red en Netcat, lo que funciona. SSH simplemente hace lo suyo sin conexiones de red, y Netcat envía los datos sin procesar a través de una conexión TCP al servidor SSH.
ADVERTENCIA: Dado que esto modifica ProxyCommand
para todos los hosts, no sé cómo interactúa con otros hosts de configuración SSH que usan ProxyCommand
. Tengo algunos servidores con los que puedo probar esto, y actualizaré esta respuesta con los resultados. Existe la posibilidad de que no haya efectos secundarios perjudiciales, pero no puedo garantizarlo.
Actualización n. ° 2: Realicé algunas pruebas con algunos de mis servidores y parece funcionar. SSH utiliza la entrada superior en la configuración cuando se aplican varias entradas. Por lo tanto, un ProxyCommand
presente existente sobre este truco lo anularía. Cuando se ejecuta el nuevo comando SSH, vuelve a leer la configuración SSH y, si no hay otro ProxyCommand
, SSH usa nuestro truco ProxyCommand
, lo que le permite aplicarse solo a la sesión SSH "más externa". Palabra de advertencia: si coloca el truco en la parte superior del archivo de configuración (o encima de la entrada a la que está intentando hacer SSH), las sesiones SSH que requieren una ProxyCommand
ignorarán a la otra ProxyCommand
y en su lugar intentarán resolver la dirección del host y conectarse directamente con Netcat.