Supongamos que en una red interna de una institución se permiten las conexiones ssh
hacia fuera pero no las conexiones directas de entrada. Las conexiones
de entrada deben ocurrir pasando por una máquina bastión. Es posible usar
un tunel inverso para poder acceder a una máquina concreta de la red
sin pasar por el bastión.
Estando en la máquina de la institución (máquina escuela
) establecemos
la siguiente conexión con la máquina fuera de la red (micasa
):
usuario@escuela:~$ ssh -R 2048:localhost:22 micasa Password: Linux micasa 2.4.20-perfctr #6 SMP vie abr 2 18:36:12 WEST 2004 i686 You have mail. Last login: Fri Mar 23 12:25:08 2007 from escuela micasa:~>
Ahora establecemos en micasa
una conexión por el puerto 2048 a micasa
:
usuario@micasa:~$ ssh -p 2048 localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is 1b:8f:55:d1:ea:7c:fb:0c:84:ec:fa:33:9a:54:f8:91. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts. usuario@localhost's password: Linux escuela 2.6.15-1-686-smp #2 SMP Mon Mar 6 15:34:50 UTC 2006 i686 ...... Last login: Fri Mar 23 12:36:54 2007 from micasa usuario@escuela:~$La conexión es redirigida hacia la máquina en la intranet en forma segura.
La sintáxis general de esta forma de uso de ssh
es:
ssh -R [bind_address:]port:host:hostport machineLa opción
-R
especifica que el puerto port
del servidor remoto debe ser redirigido
al puerto hostport
del servidor host
via el lado local.
Esto funciona porque el servidor SSH pone un proceso
que escucha el puerto en el lado remoto (el 2048 en el ejemplo) y cuando ocurre una conexión
a ese puerto la redirige al canal seguro hasta el cliente SSH, el cual conecta
con la máquina host
por el puerto hostport
.
Figura: ssh -R [bind_address:]port:host:hostport machine
Puede usar cualquier número de puerto mayor que 1024 y menor que 32768.
ssh
iniciada en escuela
.
¿Que ocurre? ¿Se cierra la conexión inversa?
sftp
, scp
, etc?
Pruebe:
usuario@micasa::~> scp -p -P 2048 /tmp/ssh.txt usuario@localhost:
usuario@micasa::~> sftp -oPort=2048 usuario@localhost
usuario@micasa::~> slogin -p 2048 usuario@localhost
usuario@millo:~$ ssh -N -X -R 2048:localhost:22 micasay después:
usuario@micasa~$ ssh -X -p 2048 localhost Last login: Wed May 20 17:47:46 2009 from XXXXXXXXXXXXXXXXXXXXX usuario@millo:~$ xclock & [1] 6895¿Funciona?
Casiano Rodríguez León