Estoy tratando de configurar un contenedor docker que uso para evitar firewalls/NAT para permitir el acceso SSH a las computadoras detrás de estas barreras de enrutamiento. En esencia, tengo un servicio SSH escuchando dentro de un contenedor docker, al que se conectan mis otras computadoras, abriendo un reenvío de puerto SSH inverso, y luego, si quiero conectarme a una computadora detrás de un firewall, me conecto a mi servidor proxy acoplado en el puerto inverso. Ejemplo:
La computadora con cortafuegos "Bob" se conecta al servidor proxy:
ssh -R 2024:localhost:22 -N remote.server
A continuación, me conecto al servidor remoto en el puerto 2024
para seguir el túnel hacia abajo y conectarse a localhost:22
en bob:
ssh -p 2024 remote.server
Todo esto funciona muy bien cuando no está acoplado, sin embargo, cuando intenté mover esto a un servicio acoplado, descubrí que mi sshd
el servidor dentro del contenedor docker se niega obstinadamente a abrir reenvíos de puertos remotos. Conectando con ssh -vvv
en el primer paso anterior da:
...debug1: Entering interactive session.debug1: pledge: networkdebug3: receive packet: type 4debug1: Remote: Server has disabled port forwarding.debug3: receive packet: type 82debug1: remote forward failure for: listen 2024, connect localhost:22Warning: remote port forwarding failed for listen port 2024debug1: All remote forwarding requests processed
Que se parece mucho a mi sshd
no está configurado para permitir el reenvío de puertos remotos. Sin embargo, mi sshd_config
parece pensar que es:
# tail /etc/ssh/sshd_config -n 5GatewayPorts yesAllowTcpForwarding yesAllowStreamLocalForwarding yesPermitTunnel yesUsePrivilegeSeparation no
De hecho, correr con ssh -ddd
dentro del contenedor de la ventana acoplable, luego se conecta con la línea de arriba que se muestra primero:
debug3: /etc/ssh/sshd_config:91 setting GatewayPorts yesdebug3: /etc/ssh/sshd_config:92 setting AllowTcpForwarding yesdebug3: /etc/ssh/sshd_config:93 setting AllowStreamLocalForwarding yesdebug3: /etc/ssh/sshd_config:94 setting PermitTunnel yesdebug3: /etc/ssh/sshd_config:95 setting UsePrivilegeSeparation no
Seguido de:
debug1: server_input_global_request: rtype tcpip-forward want_reply 1debug1: server_input_global_request: tcpip-forward listen localhost port 2024debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0
Claramente, mi configuración se está configurando correctamente, pero parece que el cliente todavía piensa que el servidor no puede hacer el reenvío de puertos. ¿Cómo puedo convencer al servidor Openssh para que realice el reenvío remoto? ¿Qué podría causar este fallo?
El cliente se está ejecutando OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
el servidor se está ejecutando OpenSSH_6.7p1 Debian-5+deb8u4
, la versión de docker es 17.09.1-ce
en Amazon Linux 2017.09
.
¡Gracias!