21 abril 2008

Túnel SSH para conectarse a subversion

Vou a poner un caso ilustrativo que puede ser extensible a casos similares. Tenemos un Equipo A que quiere acceder a un repositorio de Subversion (puerto 3690) de un Equipo B, pero el Equipo B tiene restringido el acceso a determinadas IPs entre las cuales está el Equipo C (en el cual tenemos cuenta). La solución es utilizar un túnel ssh para poder conectar el Equipo A al Equipo B a través del Equipo C.


EquipoA> ssh -L3690:EquipoB:3690 EquipoC


Lo que significa: "crea un túnel SSH para que el puerto local (Equipo A) 3690 esté conectado con el puerto 3690 del Equipo B a través del Equipo C."

Una vez establecida la conexión (nos pedirá los datos de la cuenta del Equipo C que usamos de intermediario), podemos conectarnos a su repositorio mediante la URL: svn://localhost:3690 desde el Equipo A de forma transparente.

Existe otra alternativa sin usar el Equipo C de intermediario cuando tenemos cuenta en el propio Equipo B al que nos queremos conectar:


EquipoA> ssh -L3690:EquipoB:3690 EquipoB


Lo que significa: "crea un túnel SSH para que el puerto local (Equipo A) 3690 esté conectado con el puerto 3690 del Equipo B directamente por SSH". Nos conectaremos al repositorio con: svn://localhost:3690

Una última opción, si tenemos acceso ssh al Equipo A, sería conectarnos por ssh al Equipo B y desde ahí ejecutar (usando ahora el parámetro -R para dejar el puerto accesible desde el equipo al que nos conectamos, no desde el que lo lanzamos) :


EquipoB> ssh -R3690:EquipoB:3690 EquipoA


Lo que significa: "crea un túnel SSH para que el puerto 3690 del Equipo B esté conectado con el puerto 3690 del Equipo A directamente por SSH". Nos conectaremos al repositorio con: svn://localhost:3690

Nota 1: La conexión permanecerá activa mientras dure la sesión SSH.

Nota 2: Desde Windows se puede utilzar el putty para crear el túnel, introduciendo los parámetros en la categoría Connection > SSH > Tunnels y luego conectándonos al EquipoB por ssh como siempre.

No hay comentarios: