¿Es posible tunelizar el tráfico https a través del túnel ssh con programas ssh estándar?


12

¿Puedo redirigir el tráfico https (de un repositorio svn) a través de ssh-tunnel.

El problema es que los servicios que usan https no funcionan si solo creo un túnel para escuchar, por ejemplo:

ssh -L 12345:server.com:443 localhost

¿Tengo que hacer otra cosa? El objetivo es hacer un túnel https://PROJECT.googlecode.com/svn/ donde PROYECTO es el nombre del proyecto.

Respuestas:


12

La conexión HTTPS se puede redirigir a través del reenvío de puertos SSH; sin embargo, la validación del certificado SSL / TLS fallará en los casos en que el nombre de host no coincida:

Se está conectando a https: // localhost: 12345 pero el certificado del servidor contiene el nombre server.com.

En lugar de reenviar directamente la conexión HTTPS, ejecutaría un proxy HTTP (s) / SOCKS en la computadora remota a la que está abriendo la conexión SSH. Luego configure el programa que desea hacer un túnel para usar este proxy a través del reenvío de puertos. Esta sería una solución limpia.

Actualización: Parece que SVN puede usar servidores proxy HTTP pero no servidores proxy SOCKS. Si desea hacerlo, necesita un "calcetín" adicional en su sistema local. Consulte Serverfault.com: ¿Cómo puedo configurar el proxy para la subversión con el túnel ssh?


¿Puedo usar este tipo de enfoque: dltj.org/article/ssh-as-socks-proxy ? Entonces, en el caso de googlecode, tendría una computadora local -> socks-computer -> googlecode. Y este "ssh -D" se ejecutaría en la computadora local: ssh -D 12345 [nombre de usuario] @ [socks-computer]. Ahora tengo que decirle a svn que use proxy en la computadora local: 12345. ¿Necesito algo más?
— Juha

Genial, no sabía que OpenSSH ya incluye un proxy SOCKS. Vea también mi respuesta actualizada.
— Robert

66
Puede solucionar el problema del certificado HTTPS agregando el host remoto a su archivo de hosts locales con la dirección IP 127.0.0.1. Entonces puede usar la dirección remotehost: 12345 , pero el tráfico seguirá siendo dirigido al túnel SSH.
— Juha Palomäki

@ JuhaPalomäki deberías agregar esto como respuesta
— elhefe

1

Para poder solucionar el problema de falta de coincidencia de DNS del certificado al acceder al servidor remoto con el túnel SSH, hice lo siguiente:

  1. Configure un túnel SSH en masilla para que el puerto local 443 reenvíe el tráfico al servidor remoto (L443 : <remote.server.com>:443 )
  2. Actualizar C:\Windows\System32\drivers\etc\hostsarchivo para agregar una entrada como127.0.0.1 <remote.server.com>
  3. Si está utilizando un servidor proxy HTTP (por ejemplo, si está trabajando desde un proxy corporativo), omita el <remote.server.com>host del proxy del sistema
  4. Ahora puede acceder a la URL del servidor remoto con https://<remote.server.com>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.