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:3690Una ú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:3690Nota 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.