Servir Internet a la máquina remota a través de la sesión SSH?

19

La máquina a través de la cual estoy enviando SSH a la máquina remota / host (misma red / LAN) tiene acceso a Internet, pero el host no.

Ejecutar actualizaciones e instalar paquetes en el host se vuelve bastante inconveniente porque luego tengo que iniciar un proxy localmente y luego configurar la máquina remota para usarlo.

Entonces, me preguntaba si hay una manera más fácil de hacer esto a través de, tal vez, SSH o algo más.

Me doy cuenta de las complejidades que se encuentran dentro, pero tenía curiosidad por saberlo.

Utilizando a plinktravés de Emacs (si es importante).

Dedos sangrantes
fuente

Respuestas:

21

Llamemos a la máquina que tiene acceso a internet hasinety la que no noinet.

Si puede hacer una conexión SSH de noinet a hasinet

Puede hacerlo fácilmente con el proxy SOCKS incorporado de OpenSSH. Este comando configurará un proxy SOCKS al noinetescuchar en el puerto 1080:

noinet$ ssh -D 1080 hasinet

Si sólo se puede hacer conexiones SSH a noinet partir de hasinet

Puede ejecutar el proxy SOCKS de OpenSSH hasinety luego reenviar un puerto desde noineta hasinet. Esto se puede hacer hábilmente con un comando como este (gracias @Patrick):

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet

Cómo usar el proxy SOCKS

La forma en que use este proxy dependerá de la aplicación. Algunas aplicaciones tienen soporte para los servidores proxy SOCKS integrados. Si ese es el caso, deberá configurar su aplicación para usar el proxy localhost:1080. De lo contrario, puede usar proxychains o redsocks, como sugiere @sciurus. tsocks es una solución más ligera si solo necesita proporcionar acceso a la red para algunos comandos.

smammy
fuente
1
En lugar de tener que instalar un proxy de calcetines en hasinet cuando noinet necesita salir, solo ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet(sí, un comando).
Patrick
2

Aquí hay una manera de hacer esto a través de SSH:

En la máquina sin acceso a internet, ejecute

ssh -D 8080 machine_with_internet_access

Puede reemplazar 8080 con cualquier número de puerto no utilizado,

Luego instale software como proxychains o redsocks , configúrelos para conectarse a localhost: 8080 y ejecute software que necesite acceso a Internet a través de ellos.

Sciurus
fuente