SSH tunnel over multi hops usando putty

10

Eu tenho uma situação onde eu quero me conectar a uma máquina Linux rodando VNC (vamos chamar VNCServer) que está atrás de duas máquinas Linux consecutivas, ie, para ssh no VNCServer, eu tenho que ssh no Gateway1 do meu laptop, então do shell do gateway1 ssh no Gateway2 e depois desse shell eu finalmente ssh no VNCServer. Não consigo alterar o design da rede e o fluxo de acesso Computador portátil - > Gateway1 - > Gateway2 - > Servidor. Eu não tenho privilégios de root no Gateway1 e todas as portas, exceto 22 e 5901 estão fechadas.

Existe uma maneira pela qual eu posso iniciar um visualizador VNC no meu laptop e acessar o VNCServer? Eu entendo que isso pode ser feito usando recursos de tunelamento ssh e eu tenho putty no meu laptop Windows (desculpe, não Linux ou Cygwin etc. podem ser instalados no laptop de trabalho). Qualquer ajuda será muito apreciada, pois isso tornaria minha vida mais fácil!

    
por xkcd 14.12.2011 / 14:57

2 respostas

18

Putty suporta túneis ssh, se você expandir a árvore Connection, SSH, verá uma entrada para túneis.

Os túneis locais produzem uma abertura de porta do host local na máquina do Windows, que remonta ao endereço IP e à porta especificados. Por exemplo, quando eu estou tentando RDP para um desktop em minha casa, eu geralmente escolho uma porta local aleatória, algo como 7789, em seguida, coloco o endereço IP local da área de trabalho (1.2.3.4:3389) como o controle remoto. hospedeiro. Não se esqueça de clicar em "Adicionar" e depois em "Aplicar". Neste ponto, quando você fizer o rdp para 127.0.0.1:7789, você se conectará a 1.2.3.4:3389 sobre a sessão putty.

É aqui que entra a diversão. Se você configurar um túnel de porta em sua caixa intermediária, configurando a porta local que especificou como a porta remota em massa, poderá saltar através de sua massa, através da caixa intermediária. destino final. Você ainda precisará fazer algumas conexões ssh, mas poderá cruzar o vnc ou o rdp diretamente do sistema Windows, assim que estiver pronto, que é o que acredito que você está procurando fazer.

EXEMPLO

  1. Vá para o painel de túneis em Putty (Conexões- > SSH- > Túneis acessados a partir do menu de contexto se a sessão ssh já estiver ativa ou na tela de conexão inicial ao iniciar o putty)
  2. Crie um túnel com a fonte local 15900 e a fonte remota 127.0.0.1:15900
  3. Conecte-se (se ainda não estiver conectado) ao Gateway1.
  4. No gateway1, ssh -L 127.0.0.1:15900:VNCServerIP:5900 user @ Gateway2
  5. Uma vez que o ssh para Gateway2 está ativo, tente vnc para 127.0.0.1:15900 - agora você deve ver a tela do VNC do outro lado!

BONUS ADICIONADO - muitas pessoas não sabem disso, mas esse processo também pode ser usado para proxy do tráfego IPv6 / IPv4. O SSH não se importa com o protocolo que ele usa para os túneis, portanto, você pode, teoricamente, acessar hosts IPv6 somente de um sistema somente IPv4, já que o servidor ssh é dual stack (possui endereços IPv4 e IPv6).

    
por 14.12.2011 / 16:46
13

Existe uma alternativa se você quiser usar o PuTTY para ambos os saltos. Neste exemplo, estamos pulando do Gateway # 1 (10.0.1.123) para o Gateway # 2 (10.0.1.456) para a porta 80 em 10.0.1.789.

  1. Primeiro, crie o hop para o gateway # 1. Primeiro, configure a conexão com o primeiro servidor. Configurar um túnel para o segundo gateway em Túneis de conexão > SSH > Neste exemplo, estamos encaminhando a porta 2222 para o segundo gateway.

  2. Agora vamos configurar o segundo salto. Vamos escavar o primeiro gateway para o próximo gateway e configuração de encaminhamento de porta no segundo gateway. A conexão é para localhost na porta 2222. Isso fará o encapsulamento através da conexão ssh em execução para o segundo salto. Nesta conexão, configuramos uma porta para frente da porta 3333 para a 10.0.1.789.

  3. Agora, abra um navegador e navegue até 127.0.0.1:3333 e você fará o tunelamento por meio das duas conexões SSH para 10.0.1.789:80

por 04.01.2013 / 16:25