La idea es, acceder a un servidor X saltando en el servidor A que tenemos acceso directo via SSH, la gracia de esto, que el ssh desde el servidor A hasta el X, puede ser cualquier puerto, no tiene que ser otro SSH, de ahí la flexibilidad.
El comando es así:
ssh -L Puerto_Local:IP_Servidor_X:Puerto_del_Servicio usuario@Servidor_A
- Puerto_Local, es el puerto desde donde comenzará la comunicación entre el PC y el servidor X, puede ser cualquier número de puerto que no esté siendo utilizado.
- IP_Servidor_X, esta IP es el servidor al que me interesa acceder.
- Puerto_del_Servicio, es el número de puerto que necesito conectar, por ejemplo, SSH y SFTP usan el 22, bases datos como Oracle 1521, Postgresql 5432, etc...
- usuario@Servidor_A, es el usuario y nombre de servidor o IP del servidor al que tenemos acceso vía SSH normalmente.
ssh -L 8888:10.11.12.75:22 usuario@servidorssh
preguntará la contraseña de usuario y se abrirá una consola, eso quiere decir que se ha establecido el túnel, para confirmarlo, ejecutar:
netstat -antop | grep 8888
debiera aparecer algo similar a esto:
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 10931/ssh off (0.00/0/0)
el LISTEN es importante, quiere decir que está listo para ser usado.
Entonces ahora ejecuto:
sftp -P 8888 usuarioX@localhost
preguntará la contraseña del usuarioX, este es el usuario del servidor_X!! y accederá al sftp!! pudiendo descargar o transferir cosas de manera directa sin problemas!!
Si se quiere usar para conectar a un servidor de base de datos, se debe utilizar el 8888 como puerto del servidor y como nombre del servidor usar localhost, no olvidar eso para que funcione.