Reverse SSH Tunnel do servidor ssh local para o cliente ssh remoto, encaminhando o tráfego para outro servidor na rede do cliente?

0

Isso é possível?

  1. sistema local com servidor ssh
  2. cliente remoto executando a conexão do cliente ssh com (1)
  3. destino na rede do cliente (2) para tráfego local (1)

Quando o cliente ssh remoto se conecta ao servidor ssh local, eu quero encaminhar o tráfego do meu sistema local para outro local na rede do sistema do cliente.

Por exemplo, se eu estiver fazendo o encaminhamento para a porta 80, depois que o cliente se conectar via ssh, e o tráfego local direcionado para a porta 80 será redirecionado para (3) acima.

Se possível, e sugeriu clientes ssh que suportariam isso mais facilmente, ou este tipo de linha de comando é apenas?

Obrigado!

    
por Promethean 19.12.2013 / 18:41

1 resposta

0

A primeira parte disso - criando o túnel - pode ser feita pelo software cliente ssh.

No cliente ssh da linha de comando padrão (estou usando um Mac, mas acredito que esse comportamento corresponda às versões unix / linux), o uso especifica ' -R [bind_address:]port:host:hostport ' para uma porta ser encaminhada do servidor para o cliente (enquanto -L encaminha do cliente para o servidor).

Por exemplo, se você quiser encaminhar a porta 80 no servidor ssh remoto para um servidor web local que o computador cliente acessaria indo para http://localserver:80/ , você se conectaria com o argumento de linha de comando extra -R 80:localserver:80 .

Dependendo do sistema operacional do computador cliente, haverá várias outras opções para configurá-lo. Se você estiver em algum SO baseado em unix, eu recomendaria o acima, ou se você estiver no Windows, o PuTTY é capaz de configurar esse tipo de túnel (Configurações / SSH / Túneis - selecione 'Remoto' em vez de 'Local ').

Quando o túnel estiver configurado, isso permitirá que qualquer pessoa na mesma rede que o servidor ssh se conecte ao servidor da Web na rede do cliente. No entanto, eles não poderiam se conectar a ele por meio de seu IP real - eles teriam que se conectar a http://sshserver:80/ e o tráfego seria encaminhado para o servidor remoto, e a resposta retornada.

Se você quisesse poder acessar o mesmo servidor através do mesmo url, você precisaria adicionar uma entrada DNS correspondente na rede do servidor ssh, apontando para o endereço IP do servidor ssh. Não seria acessível quando o cliente ssh estiver desconectado.

Além disso, observe que o servidor ssh tem apenas uma porta 80, então você só pode fazer isso para um servidor remoto de cada vez. Se você quiser contornar essa restrição, você teria que atribuir vários IPs ao servidor ssh, e usar o argumento opcional 'bind address' na linha de comando ssh, ou você poderia distribuir servidores para diferentes portas (comumente 8080, 8081, ...) selecionando diferentes portas remotas no comando ssh - os próprios servidores web ainda podem usar a porta 80.

    
por 20.12.2013 / 02:04