Como hemos visto en otros post rsync es una herramienta bastante útil para copiar, respaldar o sincronizar archivos y directorios en Linux, sin embargo hay ocasiones en donde solo te puedes conectar a un servidor por ssh y un puerto diferente al 22. Esto puede representar un problema pues el modo normal de usar rsync no funciona. Aquí te digo como usar rsync por medio de ssh y un puerto personalizado.
Cómo usar rsync por medio de ssh y un puerto personalizado
En otros posts hemos visto en detalle las opciones del comando rsync en linux y tambíen hemos visto bastantes ejemplos de rsync en los que puedes apreciar las formas de usar este comando y las ventajas que te ofrece.
Pero hay un caso importante, que merece ser tratado en un post individual y es cuando necesitas conectarte a un servidor o equipo que tiene ssh pero está configurado para escuchar por un puerto TCP diferente al puerto 22, que es el TCP puerto estándar del servicio ssh. Para poder utilizar rsync de esta forma necesitas hacer una modificación al comando que se utiliza mediante el parámetro -e
Para hacer algo de memoria, el parámetro -e te permite utilizar una protocolo de conexción sobre el cual ejecutar la transferencia de información que realizar rsync. Cuando necesitas utilizar ssh por ejemplo, puedes usarlo de esta forma:
rsyn -avz -e "ssh" usuario@midominio.com:/home/usuario/ ./Respaldos/usuario/
En esta forma le indicas al comando rsync que deseas hacer una copia del contenido de /home/usuario/ en el host midominio.com y deseas guardarlo en la carpeta ./Respaldos/usuario/ al utilizar el comando -e «ssh» le indicas que la conexión se realizará por medio de un tunel usando ssh, por default trabajará en el puerto 22 del host midominio.com
Sin embargo si es no es el puerto en el que el servicio ssh está operando en el host midominio.com necesitas agregar el puerto específico para que pueda funcionar. Para este ejemplo vamos a suponer que el puerto del ssh en midominio.com está configurado en el puerto 1322 por ejemplo.
Si quieres que la copia de archivos usando rsync funcione cuando el ssh esté configurado en el puerto 1322 entonces puedes indicarlo agregando un par de datos al parámetro -e, de esta forma:
rsyn -avz -e "ssh -p 1322" usuario@midominio.com:/home/usuario/ ./Respaldos/usuario/
De esta forma podrás indicarle que la comunicación mediante ssh se debe realizar por medio del puerto 1322, y podrás realizar la copia de los archivos que indiques en el comando.
Es un truco sencillo pero que seguro se te va a presentar la necesidad de usarlo pues si el administrador de un servidor se ocupa en algo de la seguridad, por lo menos va a utilizar un puerto no estándar para el protocolo ssh.
Espero que este pequeño post te sea de utilidad pues la primera vez que me topé con esto me causó bastantes dolores de cabeza y la verdad que es una solución muy sencilla.