É possível encapsular o tráfego https via túnel ssh com programas ssh padrão?


12

Posso redirecionar o tráfego https (de um repositório svn) via ssh-tunnel.

O problema é que os serviços que usam https não funcionam se eu apenas criar um túnel para ouvir, por exemplo:

ssh -L 12345:server.com:443 localhost

Eu tenho que fazer outra coisa? O objetivo é encapsular https://PROJECT.googlecode.com/svn/ em que PROJECT é o nome do projeto.

Respostas:


12

A conexão HTTPS pode ser redirecionada via encaminhamento de porta SSH - no entanto, a validação do certificado SSL / TLS falhará nos casos em que o nome do host não corresponda:

Você está se conectando a https: // localhost: 12345, mas o certificado do servidor contém o nome server.com.

Em vez de encaminhar diretamente a conexão HTTPS, eu executaria um proxy HTTP (s) / SOCKS no computador remoto ao qual você está abrindo a conexão SSH. Em seguida, configure o programa que você deseja encapsular para usar esse proxy por meio do encaminhamento de porta. Esta seria uma solução limpa.

Atualização: parece que o SVN pode usar proxies HTTP, mas não proxies SOCKS. Se você quiser fazer isso, precisará de um "socksifier" adicional no seu sistema local. Consulte Serverfault.com: Como posso configurar o proxy para subversão com o túnel ssh?


Posso realmente usar esse tipo de abordagem: dltj.org/article/ssh-as-socks-proxy ? Portanto, no caso do googlecode, eu teria um computador local -> meias-computador -> googlecode. E esse "ssh -D" seria executado no computador local: ssh -D 12345 [nome de usuário] @ [socks-computer]. Agora eu tenho que dizer ao svn para usar o proxy no computador local: 12345. Preciso de outra coisa?
quer

Legal, eu não sabia que o OpenSSH já inclui um proxy SOCKS. Veja também minha resposta atualizada.
Robert

6
Você pode solucionar o problema do certificado HTTPS adicionando o host remoto ao arquivo de hosts locais com o endereço IP 127.0.0.1. Em seguida, você pode realmente usar o endereço remotehost: 12345 , mas o tráfego ainda será direcionado para o túnel SSH.
Juha Palomäki

@ JuhaPalomäki você deve adicionar isso como uma resposta
elhefe

1

Para solucionar o problema de incompatibilidade de DNS do certificado ao acessar o servidor remoto com o túnel SSH, fiz o seguinte:

  1. Configure um túnel SSH na massa de vidraceiro para que a porta local 443 encaminhe o tráfego para o servidor remoto (L443 : <remote.server.com>:443 )
  2. Atualizar C:\Windows\System32\drivers\etc\hostsarquivo para adicionar uma entrada como127.0.0.1 <remote.server.com>
  3. Se você estiver usando o servidor proxy HTTP (por exemplo, se estiver trabalhando em um proxy corporativo), ignore o <remote.server.com>host do proxy do sistema
  4. Agora você pode acessar a URL do servidor remoto com https://<remote.server.com>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.