2008-09-05 27 views

Respuesta

11

Otro camino a seguir sería el uso de ssh tunelización (que ocurre en el lado del cliente).

Harías un comando ssh como esto:

ssh -L 8022:myinsideserver:22 [email protected] 

que lo conecta a la máquina que se puede acceder desde el exterior (myoutsideserver) y crea un túnel a través de esa conexión SSH al puerto 22 (ssh estándar puerto) en el servidor que solo es accesible desde el interior.

Entonces Harías otro comando ssh como esto (dejando el primero sigue conectado):

ssh -p 8022 [email protected] 

Esa conexión al puerto 8022 en su host local entonces conseguirá un túnel a través de la primera conexión SSH que le llevará a lo largo myinsideserver.

Puede haber algo que tenga que hacer en myoutsideserver para permitir el reenvío del puerto ssh. Lo estoy comprobando dos veces ahora.

Editar

Hmmm. La página de personal de ssh dice esto: ** Solo el superusuario puede reenviar puertos con privilegios. **

Eso me implica que la primera conexión ssh tiene que ser como root. Tal vez alguien más pueda aclarar eso.

Parece privilegios de superusuario no son necesarios, siempre y cuando el puerto reenviado (en este caso, 8022) no es un puerto privilegiado (como 22). Gracias por la aclaración Mike Stone.

+1

¡He estado intentando descubrir cómo hacer esto y finalmente encontré esto! ¡Ojalá pudiera hacer clic en la flecha hacia arriba más de una vez! –

3

@Mark Biek

que iba a decir eso, pero me ganó de mano! De todas formas, sólo quería añadir que también existe la opción -R:

ssh -R 8022:myinsideserver:22 [email protected] 

La diferencia es lo que la máquina se conecta a/desde. Mi jefe me mostró este truco no hace mucho tiempo, y definitivamente es realmente bueno saberlo ... estábamos detrás de un cortafuegos y necesitábamos dar acceso externo a una máquina ... lo solucionó con ssh -R a otra máquina eso era accesible ...luego, las conexiones a esa máquina se reenviaron a la máquina detrás del firewall, por lo que debe usar -R o -L según la máquina en la que se encuentre y al que esté enviando ssh-ing.

Además, estoy bastante seguro de que puede utilizar un usuario normal siempre que el puerto que está reenviando (en este caso, el puerto 8022) no esté por debajo del rango restringido (que creo que es 1024, pero podría estar equivocado), porque esos son los puertos "reservados". No importa que lo esté reenviando a un puerto "restringido" porque ese puerto no se está abriendo (la máquina solo está recibiendo tráfico a través del túnel, no tiene conocimiento del túnel), el puerto 8022 ES ser abierto y, por lo tanto, restringido como tal.

EDITAR: Recuerde que el túnel solo está abierto mientras que el ssh inicial permanezca abierto, por lo que si se agota el tiempo de espera o si sale de él, el túnel se cerrará.

0

En Ubuntu , puede instalar Firestarter y luego usar su característica Forward Service para reenviar el tráfico SSH desde un puerto no estándar en su máquina con acceso externo al puerto 22 en la máquina dentro de su red.

En OS X puede editar el archivo /etc/nat/natd.plist para habilitar el envío a puerto.

0

Sin perder el tiempo con las reglas de firewall, puede configurar un archivo ~/.ssh/config.

Supongamos que 10.1.1.1 es el sistema 'gateway' y 10.1.1.2 es el sistema 'cliente'.

Host gateway 
    Hostname 10.1.1.1 
    LocalForward 8022 10.1.1.2:22 

Host client 
    Hostname localhost 
    Port 8022 

puede abrir una conexión SSH a 'puerta' a través de:

ssh gateway 

En otro terminal, abrir una conexión con el cliente.

ssh client 
Cuestiones relacionadas