2009-05-08 20 views
20

¿Es posible configurar un túnel SSH con el reenvío de puertos dinámicos como esto:ssh -D <port><[email protected]>; pero al revés?

ssh -D

pero hacerlo al revés? Es decir, quiero iniciar la conexión en mi máquina local y hacer que el reenvío dinámico de puertos ocurra allí, y que mi amigo conecte su navegador al otro extremo del túnel.

Lo anterior funciona perfectamente si mi amigo escribe lo de arriba, pero no quiero darle acceso ssh a mi máquina, solo déjalo que lo proxy de su navegador.

+1

Esta pregunta no está relacionada con la programación. Pruebe serverfault.com – bdukes

Respuesta

27

Para openssh, ver el interruptor -R:

-R [bind_address:]port:host:hostport 
     Specifies that the given port on the remote (server) host is to 
     be forwarded to the given host and port on the local side. This 
     works by allocating a socket to listen to port on the remote 
     side, and whenever a connection is made to this port, the connec‐ 
     tion is forwarded over the secure channel, and a connection is 
     made to host port hostport from the local machine. 

Aunque puede haber mejores soluciones, se puede crear un proxy SOCKS en la computadora de su amigo remotehost en el puerto 24680 de la siguiente manera. En primer lugar, hacer

ssh -R 24680:localhost:12345 remotehost 

Y luego, hacer

ssh -D 12345 localhost 

Obviamente, ambas sesiones necesita ser mantenido con vida al mismo tiempo.

+3

Vale la pena solo agregar una pequeña explicación. Entonces cuando tienes CompA y CompB. El 'ssh -R 24680: localhost: 12345 remotehost' se ejecuta desde CompA, y' ssh -D 12345 localhost' también se ejecuta desde CompA. Crea un proxy para la persona B para usar el proxy SOCKS en CompA. La persona en CompB conecta el navegador web a su puerto local (B) 24680 y, por lo tanto, por proxy, usa el proxy SOCKS en CompA. ¡Muy inteligente! – barlop