2011-11-10 13 views
6

Tengo un escenario específico que quiero resolver. Actualmente me conecto a un host a través de la redirección de puertos:ssh reenvío de puertos (tunelización) en linux

laptop -> gateway -> remote_server_1 

y otro host:

laptop -> remote_server_2 

con inicio de sesión sin contraseña trabajar en ambos. Ninguno de los servidores remotos es visible para el mundo exterior. Ahora estoy ejecutando un servicio en remote_server_2, que me gustaría poder acceder en remote_server_1. Supongo que tengo que configurar el reenvío de puertos retros de remote_server_1 a mi computadora portátil, y luego a remote_server_2, pero no estoy seguro de cómo hacer esto. ¿Alguien se encuentra con esta situación antes?

Editar: La solución completa en caso de que nadie más lo necesita:

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

Entonces configuración del túnel a través de gateway a server_1:

ssh -t -t -L 3003:server_1:22 gateway 

luego acceder a ella desde server_1:

ssh -R 3002:localhost:3001 -p3003 localhost 
echo "bar" | nc localhost 3002` 

y hey presto server_2 muestra bar :-)

Respuesta

4

Tienes que hacer exactamente lo que has descrito. Configure el servidor en server_2.

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

Luego acceda a él desde server_1.

mylaptop$ ssh -R 3002:localhost:3001 server_1 
server_1$ echo "foo" | netcat localhost 3002 

server_2 mostrará foo.

+0

Esto casi funciona, excepto que también tengo que pasar al servidor_1. Así que si yo: MiEquipo $ ssh -L 3003: puerta de entrada: 3002 servidor_1 y MiEquipo $ ssh -R 3003: localhost: 3000 -p3003 localhost estoy en la dirección correcta? El servidor_1 no tiene netcat (no tengo derechos de administrador en él) – tdc

+0

Lo siento, me di cuenta de que netcat está aquí. De todos modos, todavía no funciona del todo. – tdc

+0

Te daré la respuesta aceptada, ya que me dio suficientes pistas para seguir: respuesta completa en mi edición. – tdc

Cuestiones relacionadas