Estou tentando configurar um contêiner docker que uso para contornar firewalls / NATs para permitir o acesso SSH aos computadores por trás dessas barreiras de roteamento. Em essência, tenho um serviço SSH escutando dentro de um contêiner docker ao qual meus outros computadores se conectam, abrindo um encaminhamento de porta SSH reverso e, se eu quiser conectar a um computador atrás de um firewall, conecto ao dockerized servidor proxy na porta reversa. Exemplo:
O computador com firewall "Bob" se conecta ao servidor proxy:
ssh -R 2024:localhost:22 -N remote.server
Em seguida, conecto-me ao servidor remoto na porta 2024
para seguir o túnel de volta e conectar-me a localhost:22
on bob:
ssh -p 2024 remote.server
Isso tudo funciona muito bem quando não é dockerizado, no entanto, quando tentei movê-lo para um serviço dockerizado, descobri que meu sshd
server dentro do contêiner docker se recusa a abrir remotamente a porta remota. Conectar-se com ssh -vvv
no primeiro passo acima fornece:
...
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 4
debug1: Remote: Server has disabled port forwarding.
debug3: receive packet: type 82
debug1: remote forward failure for: listen 2024, connect localhost:22
Warning: remote port forwarding failed for listen port 2024
debug1: All remote forwarding requests processed
O que parece muito com meu sshd
não é configurado para permitir o encaminhamento remoto de portas. No entanto, meu sshd_config
parece achar que é:
# tail /etc/ssh/sshd_config -n 5
GatewayPorts yes
AllowTcpForwarding yes
AllowStreamLocalForwarding yes
PermitTunnel yes
UsePrivilegeSeparation no
De fato, executando com ssh -ddd
dentro do contêiner docker, em seguida, conectar-se com a linha acima mostra primeiro:
debug3: /etc/ssh/sshd_config:91 setting GatewayPorts yes
debug3: /etc/ssh/sshd_config:92 setting AllowTcpForwarding yes
debug3: /etc/ssh/sshd_config:93 setting AllowStreamLocalForwarding yes
debug3: /etc/ssh/sshd_config:94 setting PermitTunnel yes
debug3: /etc/ssh/sshd_config:95 setting UsePrivilegeSeparation no
Seguido por:
debug1: server_input_global_request: rtype tcpip-forward want_reply 1
debug1: server_input_global_request: tcpip-forward listen localhost port 2024
debug1: server_input_global_request: rtype [email protected] want_reply 0
Então, claramente, minha configuração está sendo configurada corretamente, mas parece que o cliente ainda acha que o servidor não pode fazer o encaminhamento de porta. Como posso convencer o servidor openssh a realizar o encaminhamento remoto? O que poderia causar essa falha?
O cliente está executando OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
, o servidor está executando OpenSSH_6.7p1 Debian-5+deb8u4
, a versão do docker é 17.09.1-ce
on Amazon Linux 2017.09
.
Obrigado!