Túnel multihop com PuTTY

Túnel multihop com PuTTY

Como configuro o Putty para uma conexão de túnel SSH de 3 saltos? Eu sei como configurar o Putty para uma conexão de túnel SSH de 2 saltos, mas agora estou procurando uma maneira de configurá-lo com 3 saltos. Alguém pode me explicar o procedimento de como podemos conseguir isso?

Para dois saltos, estou seguindo o método abaixo.

Windows 10 (Putty) -> Linux Machine1 (192.168.1.100) -> Linux Machine2 (192.168.1.150)

  • Na janela da sessão é fornecido o endereço de destino (192.168.1.150) e a porta 22.
  • Na opção Proxy, forneci o IP do servidor intermediário (192.168.1.100) e a porta 22.
  • Também para o comando telnet, forneci o seguinte.

plink -agent -l %usuário %proxyhost -nc %host:%porta

A configuração acima funciona bem por 2 saltos. Mas agora meu requisito é um túnel SSH de 3 saltos. Como modifico o atual e adiciono mais 1 salto?

Responder1

Não está claro se você deseja apenas se conectar a uma máquina adicional na mesma rede que as Máquinas Linux 1/2 ou se precisa pular para outra rede além delas (por exemplo, Máquina 4 em 172.22.1.x).

Se você está simplesmente tentando acessar outra máquina na mesma rede 192.168.1.x da Máquina Linux 1/2, use umTúnel SSH(encontrado no menu do Putty Connection -> SSH -> Tunnels). Você pode configurar vários túneis para quantas máquinas precisar.

Se você estiver realmente tentando acessar uma terceira rede, poderá abrir outra instância do Putty que se conecta por meio de um túnel definido em sua instância original do Putty.

  • Defina um túnel no Putty que encaminhe uma porta na sua máquina local (2222 por exemplo) para a porta 22 no Linux Machine2
  • Em seguida, abra outra instância do Putty em sua máquina Windows que usa o túnel (ou seja, conecte-se ao Localhost:2222) E defina um novo túnel para encaminhar uma porta adicional (2223, por exemplo) para a porta 22 na Máquina4 (seu terceiro salto).
  • Abra mais uma instância do Putty e conecte-se ao Localhost:2223 para acessar o Machine4

Eu só fiz isso com 2 saltos, então não sei como será o desempenho. Não é uma solução ideal, mas pode funcionar se esta for a sua única opção.

Editar: se você não está limitado ao Windows/Putty,isto (SSH multi-hop transparente)pode fazer o que quiser. Se você está limitado ao Windows,Cygwinpode ter algumas ferramentas SSH mais flexíveis.

Responder2

Túnel multihop com PuTTY

PuTTY -> jHost1 (jIP1) -> jHost2 (jIP2) -> Destino (dIP)

Resposta rápida:

Sua abordagem está correta, basta usar o plink para jHost1 como proxy local para o plink para jHost2:

plink user2@jHost2 -nc dIP:dPort -proxycmd "plink user1@jIP1 -loghost jHost1 -nc jIP2:jPort2"

Mais elaboração e advertências:

  1. Use -t(em ambos os plinks) para que seusinais terminaisfunciona (já que você não está invocando um shell remoto nos hosts de salto)

  2. senhas em texto simples(na linha de comando/configuração do PuTTY) quando -l user -pw passwordé usado (não importa se você usa o espaço reservado do PuTTY% proxypass).

    • use -ipara especificar uma chave privada sem senha (já que a E/S padrão é usada pelo PuTTY e você não poderá inseri-la)
    • ou use -agentpara usar as chaves do Pageant
    • o encaminhamento de agente ( -a) não é necessário porque os plinks são executados localmente.
  3. Execute os plinks na linha de comando pela primeira vez para ver se não há perguntas adicionais. Geralmente você recebe um "O pacote recebido foi distorcido na descriptografia"erro, se o plink solicitar que você importe a chave SSH do jHost.

  4. Cuidado com o uso de jHoste jIP. Com isso jHostquero dizer onome de host lógicopara pesquisa de chave "known_hosts" do plink (armazenamento PuTTY no registro do Windows). jIPé o nome/IP do próximo salto acessível a partir do salto atual. (Você geralmente está se conectando de outra rede e não consegue reativar jHost.)

    • O plink externo pode ser usado simplesmente jHost2porque a conexão é proxy e não há nenhuma pesquisa de DNS.
    • O plink interno deve usar o jIP1para se conectar, -loghost jHost1para a pesquisa da chave local e -nc jIP2:jPort2para o NetCat para o próximo salto.
  5. Se você precisar usarEncaminhamento TCPno Destino (que deve ser permitido), a única coisa que você precisa fazer é configurá-lo no PuTTY como se não houvesse nenhum host de salto. Isso ocorre porque a conexão SSH com o destino é encapsulada por meio de jHost2 e essa conexão, por sua vez, por meio de jHost1, e os hosts de salto não têm nenhuma visão do túnel.

    • Ao contrário de apenas sshing para pular o host e executar o ssh novamente para chegar ao destino, onde você precisa usar <enter>~C<enter>a sequência para escapar para o cliente ssh do host de salto e usar comandos -L/ -Rpara adicionar túneis dinamicamente.

Sem encaminhamento TCP

plink -nc( ssh -Wequivalente) é um proxy local que encaminha sua E/S padrão por TCP por meio de um host de salto. Se você não conseguir permitir o encaminhamento de TCP nos hosts de salto, como uma solução alternativa limitada, você pode usar ssh jHost1e usar ssh user2@jHost2 -t ssh user@Destinationem "Conexão -> SSH -> Comando Remoto" sem configurações de proxy.

Dessa forma, você inicia um novo cliente ssh no host de salto (e as chaves devem estar presentes/senhas redigitadas/encaminhadas pelo agente, configuração/known_hosts duplicados...).

informação relacionada