Você deve iniciar o servidor primeiro e depois iniciar o encaminhamento remoto da porta. Não o contrário.
Não sei por que isso acontece, mas obviamente resolve o problema.
Eu tenho a seguinte configuração:
server <-NAT-> VPS <-> client
Eu configurei o ssh para meu servidor por meio de um túnel reverso e as seguintes configurações:
GatewayPorts yes
autossh -f -M 57575 -N -R <VPS ip>:9991:localhost:<server ssh port> vps
Com essa configuração, posso simplesmente ssh -p 9991 <server user>@<VPS ip> e fazer login no meu servidor a partir do cliente.
GatewayPorts yes e configuração idêntica ao caso SSH
autossh -f -M 57576 -N -R <VPS ip>:9992:localhost:8988 vps
python -m http.server 8988 para iniciar o servidor http. Eu posso confirmar que ele se liga a 0.0.0.0 e eu posso acessá-lo na máquina local.
No entanto, quando tento acessar o site por meio de http://<VPS ip>:9992 , recebo um ERR_EMPTY_RESPONSE.
Olhando para o netstat, as duas situações parecem idênticas. No VPS:
tcp 0 0 0.0.0.0:9992 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9991 0.0.0.0:* LISTEN -
No servidor:
tcp 0 0 0.0.0.0:8988 0.0.0.0:* LISTEN 21003/python
tcp 0 0 0.0.0.0:<ssh port> 0.0.0.0:* LISTEN 550/sshd
tcpdump mostra que uma conexão é estabelecida com a porta 9992 no VPS, mas nada alcança a porta 8988 em server . A conexão é FIN ned imediatamente no VPS.
Por que isso não funciona, quando a situação exatamente análoga da SSH ocorre?
Tags ssh http ssh-tunneling