- Eu tenho um computador (vamos chamá-lo de A) em uma rede local sem endereço IP estático acessível externamente. (porta SSH
AAAAA
) - A tem um servidor web que desejo poder acessar de fora
- Tenho um servidor (B) acessível pela internet, que também roda um servidor web (porta ssh
BBBBB
:) - Quero poder acessar o servidor da web de A a B de qualquer computador com um navegador da web.
Tenho usado o tunelamento remoto SSH com sucesso com a seguinte configuração:
na máquina A:
$> ssh -f -N -p BBBBB -R 0.0.0.0:9000:localhost:AAAAA [email protected]
na máquina C:
$> ssh -f -p 9000 -D 9001 -N [email protected]
no navegador da máquina C,
manual proxy configuration SOCKS host: localhost, port 9001, SOCKS v5
Isso funciona muito bem, mas é muito complicado ter que iniciar o comando SSH em C e alterar as configurações do navegador sempre ...
Então falei sobre isso com alguém, que me disse que provavelmente eu poderia simplificar a configuração fazendo a parte feita na máquina C diretamente no servidor B, com alguma configuração web no nginx no servidor web de B. Então agora, eu tentei isso:
- Em A, o mesmo que antes
em B:
$> ssh -f -p 9000 -D 9001 -N [email protected]
na configuração nginx de B:
$> cat /etc/nginx/sites-available/default:
upstream tunnel { server 127.0.0.1:9000; } server { listen 80; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] } server { listen 443 ssl; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] }
No meu entender, a partir de um navegador web em uma máquina conectada à internet, solicitando http://B.B.B.B/A
o túnel deveria para 127.0.0.1:9000
qual é a porta encaminhada para minha máquina A, dando-me assim acesso ao servidor web em A.
Porém, algo está errado nesta configuração, pois quando tento me conectar, http://B.B.B.B/A
recebo um longo tempo de carregamento (cerca de um minuto) seguido por uma página em branco, com a seguinte mensagem de erro escrita nela:
SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 Protocol mismatch.
Pesquisei um pouco esse erro no Google e encontrei algumas postagens com problemas relativamente semelhantes, mas honestamente, com minhas habilidades (muito) limitadas nesse tipo de coisa, estou perdido ao tentar projetar a correção para o meu caso de uso ... Alguém pode ajudar-me?