Tengo la siguiente configuración:
[OpenSSH server] <---> [Docker container with SSH client] <---> [host machine]
Mi contenedor Docker es una especie de administrador de conexiones SSH. El servicio que se ejecuta en el servidor OpenSSH cuyo puerto estoy reenviando es un servidor web.
Desde el interior del contenedor, puedo acceder con éxito curl
al puerto tunelizado. Sin embargo, cuando intento publicar ese mismo puerto en mi host y lo intento curl
desde el host, aparece
curl: (56) Recv failure: Connection reset by peer
Este es el comando SSH que estoy usando para configurar el túnel:
ssh -nNT -L 3000:*:9413 OPENSSH_SERVER_URL
Estoy ejecutando este contenedor usando
docker run --rm --name test -p 3000:3000 ssh-connection-manager
Si inicio sesión en el contenedor, puedo curl
obtener una respuesta:
docker exec -it --entrypoint sh test
# curl localhost:3000
Hello!
No puedo hacer lo mismo desde el host a través del puerto publicado:
$ curl localhost:3000
curl: (56) Recv failure: Connection reset by peer
¿Qué me estoy perdiendo? Sospecho que es una opción de conexión en el cliente SSH o una configuración en mi servidor OpenSSH, pero no estoy seguro.