¿Puedo crear SSH para hacer un túnel HTTP a través del servidor como si fuera un proxy?

33

Digamos que tengo un servery client. Necesito crear una conexión de clienta websitetravés servercomo si fuera proxy.

¿Es posible hacer esto usando un tunel SSH, o tengo que instalar algún servicio proxy en el server?

Jakub Arnold
fuente

Respuestas:

43

Puedes hacer esto usando ssh

ssh -L 80:remotehost:80 user@myserver

Entonces tendrá un túnel desde su puerto local 80 hasta el puerto host remoto 80. Esto no tiene que ser lo mismo que myserver. Para hacerlo transparente, debe agregar una entrada al archivo de hosts. Si no lo haces, los vhosts no funcionarán. Si desea una conexión SOCKS-proxy, también puede usar

ssh -D 5000 user@myserver

Esto creará un proxy SOCKS en el puerto localhost 5000 que enruta todas las solicitudes a través de myserver.

Wienczny
fuente
2
Si necesita que ese túnel esté disponible para clientes fuera de su caja, agregue la opción -g.
mr-euro
1
El comando tal como está escrito no funcionó para mí. Tuve que reemplazar el host remoto con el loopback como este: ssh -L 80: 127.0.0.1: 80 user @ myserver
eficker
Sería más útil si el puerto remoto fuera diferente del local, ssh -L 81:remotehost:80 user@myserverel puerto local 81 habla como si fuera 80 en remoto.
Rafareino
1
Si desea agregar el proxy SOCKS a través de su ~ / .ssh / config, use:Host myserver User user DynamicForward 5000
bonh
15

Sí, es posible.

Ejecute ssh -D port user@hosty configure su cliente para usar su caja como proxy SOCKS.

Si necesita un proxy HTTP específicamente, puede usar Proxychains y enrutarlo a través de los SOCKS anteriores.

señor-euro
fuente
5

Putty hace esto bastante bien también.

Bajo SSH, vaya a Túneles. En la parte inferior, coloque 8080 en el puerto y, para el destino, déjelo en negro y seleccione el botón de opción "Dinámico". Eso es todo lo que necesita hacer, ahora conéctese al servidor usando Putty.

Una vez conectado, tiene un servidor proxy ejecutándose en su host local en el puerto 8080 que enviará todas las solicitudes a través de su servidor.

Ahora use un navegador web y configure el proxy configurando host = localhost y port = 8080 y asegúrese de que sea un proxy SOCKS que seleccione. Hago esto todo el tiempo, así que si usas Firefox, asegúrate de instalar el complemento FoxyProxy, ya que hace que activar / desactivar el proxy sea un asunto de un solo clic.

Precaución: Tenga en cuenta que, de manera predeterminada, sus solicitudes DNS no están representadas. Por lo tanto, el sitio web que visita a través del proxy todavía se registrará (si registran esto). También puede configurar Firefox para solicitudes DNS proxy, simplemente no lo hace de manera predeterminada.

J Sidhu
fuente
5

sshuttle funciona como una VPN pero a través de SSH.

Servidor proxy transparente que funciona como la VPN de un hombre pobre. Adelante sobre ssh. No requiere administrador. Funciona con Linux y MacOS. Soporta tunelización de DNS.

https://github.com/sshuttle/sshuttle

Kasper Grubbe
fuente
2

Para permitir que un proxy ejecute una computadora y permitir que otros clientes se conecten a usted, necesitará la opción -g. Entonces, por ejemplo, ejecutarías esto en el servidor llamado foo:

ssh -g -ND 9191 root@remotehost

Luego puede configurar el proxy en el navegador de un cliente para usar el servidor foo y el puerto 9191 para un proxy SOCKS. Los clientes enviarán sus solicitudes también, quienes a su vez reenviarán la solicitud a través de ssh a remotehost. Entonces, en Internet, parecerá que están usando remotehost.

Si desea reenviar también las solicitudes DNS con firefox, edite about: config en firefox y establezca network.proxy.socks_remote_dns en true.

Kyle Brandt
fuente