Conecte-se a um servidor local por meio de Proxy e SSH

0

Estou tentando acessar um aplicativo da web que está atualmente hospedado atrás do firewall da empresa em meu laptop doméstico.

Encontrei muitas perguntas e respostas sobre como criar túneis SSH, proxy SSH ou túnel SSH por meio de vários saltos. Mas ainda não consigo fazer funcionar. Eu acredito que meu caso é um pouco diferente dos outros. Deixe-me explicar:

  • Eu não tenho acesso SSH ao servidor que hospeda o aplicativo da web (caixa vermelha), ele tem apenas um IP interno.
  • Tenho acesso a uma caixa linux no local (caixa laranja) que pode alcançar o servidor que hospeda o aplicativo da web.
  • A caixa laranja não tem um endereço IP público (por isso não consigo acessar SSH da Internet), mas ela tem acesso à Internet e eu posso executar o SSH em um servidor hospedado na Internet (por exemplo, conectar-se a a caixa azul da caixa laranja).
  • Eu tenho um servidor linux na internet com um endereço IP público (caixa azul).

Eu tentei coisas diferentes sem sucesso, mas estou me perdendo honestamente.

Alguém seria gentil o suficiente para me esclarecer? : -)

    
por alfallouji 24.10.2016 / 11:34

1 resposta

0

Este é o comando para o computador laranja :

ssh -N -R:<chosen-port>:10.0.0.101:<web-app-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>

(Como fazer com que ele sobreviva ao seu logout do laranja - é um problema separado. / a>; ou tmux / screen , disown ou nohup com script personalizado.)

O comando acima torna o servidor SSH no blue escutar no (TCP) <chosen-port> de sua escolha na interface de loopback. As conexões de entrada serão encapsuladas para o laranja e enviadas para 10.0.0.101:<web-app-port> (ou seja, o vermelho ) a partir dali. Isso cria um túnel sem executar um comando nem shell no azul (graças à opção -N ).

Existe uma maneira de fazer o azul escutar na interface do outro (não-loopback), mas não é recomendado por causa da segurança; esta opção pode até ser desativada em azul (explicado em man ssh , -R opção).

Para alcançar a interface de loopback blue da sua máquina doméstica verde , use outro túnel. Em verde :

ssh -N -L:<chosen-port-2>:127.0.0.1:<chosen-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>

Agora você deve ser capaz de alcançar o vermelho do verde usando o endereço:

127.0.0.1:<chosen-port-2>

<chosen-port> e <chosen-port-2> podem ou não ser o mesmo número, isso realmente não importa. O que importa é que você deve escolher portas altas (de 1024 a 65535).

A diferença entre -L e -R tunnels:

  • -L escuta no lado local, ou seja, quando você invoca ssh ;
  • -R escuta no lado remoto, ou seja, onde você está em ssh .

Sabendo disso, você deve ser capaz de rastrear o que acabamos de fazer. Note que nós criamos os túneis se movendo em direção ao verde porque (para mim) parecia mais lógico funcionar dessa maneira. Sua conexão irá do verde , então vamos traçar toda a rota nessa direção. É o seguinte:

  1. O cliente SSH no verde escuta 127.0.0.1:<chosen-port-2> por causa do segundo túnel.
  2. Encaminha os pacotes para o servidor SSH no blue , que os envia para 127.0.0.1:<chosen-port> . Da perspectiva azul , estes são pacotes locais gerados pelo servidor SSH.
  3. O mesmo servidor SSH escuta nessa porta devido ao primeiro túnel. O servidor pega os pacotes e os encaminha para o laranja .
  4. O cliente SSH na laranja envia os pacotes para o vermelho . Da perspectiva vermelho os pacotes são do laranja , ele não sabe nada sobre o azul nem sobre o verde . / li>
por 24.10.2016 / 19:09