Buscar aquí

16 abril 2018

Acceder a un servidor remoto saltando en un servidor con ssh

Suele pasar que al tener accesos via VPNs se puede llegar a un servidor ssh y desde se debe acceder a los otros, habitualmente, puede ser necesario acceder a un servidor de base de datos, conseguir archivos via ftp o sftp por ejemplo.  Para estos casos lo mejor es usar el túnel a través de SSH.

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.
Por ejemplo, para conseguir los archivos vía SFTP:

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.