encaminhamento de porta nginx/túnel ssh

encaminhamento de porta nginx/túnel ssh
  • 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/Ao túnel deveria para 127.0.0.1:9000qual é 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/Arecebo 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?

informação relacionada