SSH - ProxyCommand
La idea de usar ProxyCommand es un opción para ejecutar automáticamente el comando ssh en el host remoto y pasar al siguiente host y reenviar todo el tráfico a través de netcat.
¿Cómo funciona?
- Se configura el usuario ssh del equipo de la red privada en tú equipo. Esto inicia el proceso padre ssh.
- El padre ssh crea un hijo ssh con E / S redirigido a tuneles que derivarán el tráfico de la conexión establecida (proxycommand).
- El ssh hijo crea una conexión con la máquina de la red pública.
- El proceso ssh en el equipo de la red pública crea una conexión tipo tcp con la máquina de la red privada deseada a través del puerto 22.
- A esto se agrega un canal ssh a la conexión ssh existente entre tú equipo y el equipo de la red pública.
- Entonces el padre de la conexión ssh escribe los datos de handshake del túnel, la conexión hijo ssh los lee desde aquél túnel, los envía a través del canal ssh a ssh del equipo de la red pública; ssh lo lee y lo escribe en el socket conectado al equipo de la red privada. Del mismo modo, los datos se transmiten desde la red privada a tú equipo
¿Cómo hacerlo?
Para lograr está acción se debe editar el archivo configuración local de SSH ~/.ssh/config (Linux - OSX) e insertar lo siguiente:
Host clustertalca user <tu-usuario-equipo-red-privada> hostname <ip-equipo-red-privada> proxycommand ssh tu-usuario-bioinfo@bioinfo.utalca.cl nc %h %p 2> /dev/null
Esto posiblemente facilitará la experiencia de uso y conectividad al centro de cómputo.
Un ejemplo de conexión:
user@clustertalca
Siendo siempre el destino la referencia o parámetro que le hemos dado al tag Host en la configuración anterior.
Ahora, en caso de necesitar realizar un copiado de datos mediante scp solo se tendría que hacer:
scp fichero.local user@clustertalca:
No olvidar que después del dos puntos (:) va en referencia al directorio personal ($HOME) del usuario.