Cómo sincronizar archivos / directorios usando Rsync con un puerto SSH no estándar
Hoy, discutiremos sobre cómo sincronizar archivos usando rsync con un puerto SSH no estándar. Quizás se pregunte por qué necesitamos usar un puerto SSH no estándar. Es por razones de seguridad. Todo el mundo sabe que 22 es el puerto SSH predeterminado.

Por lo tanto, es obligatorio cambiar su número de puerto SSH predeterminado a algo diferente, lo cual es muy difícil de adivinar. En tales casos, ¿cómo sincronizará sus archivos/carpetas con su servidor remoto? No te preocupes, no es tan difícil. Aquí veremos cómo sincronizar archivos y carpetas usando rsync con un puerto SSH no estándar.
Como sabrá, rsync, también conocido como Remote Sync, es una herramienta rápida, versátil y poderosa que puede usarse para copiar y sincronizar archivos/directorios de local a local, o de local a hosts remotos. Para obtener más detalles sobre rsync, consulte las páginas de manual:
# man rsync
O consulte nuestra guía anterior desde el siguiente enlace.
- Rsync: 10 Practical Examples of Rsync Command in Linux
Cambiar puerto SSH a puerto no estándar
Como todos sabemos, de forma predeterminada, rsync usa el puerto SSH 22 predeterminado para sincronizar archivos entre hosts locales y remotos y viceversa. Deberíamos cambiar el puerto SSH de nuestro servidor remoto para reforzar la seguridad.
Para hacer esto, abra y edite el archivo de configuración SSH/etc/ssh/sshd_config:
# vi /etc/ssh/sshd_config
Busque la siguiente línea. Elimine el comentario y cambie el número de puerto de su elección. Te recomiendo que elijas cualquier número que sea muy difícil de adivinar.
Asegúrese de utilizar un número único que no utilicen los servicios existentes. Consulte este artículo de netstat para saber qué servicios se están ejecutando en qué puertos TCP/UDP.
Por ejemplo, aquí uso el número de puerto 1431.
[...] Port 1431 [...]
Guarde y cierre el archivo.
En sistemas basados u200bu200ben RPM como RHEL, CentOS y Scientific Linux 7, debe permitir el nuevo puerto a través de su firewall o enrutador.
# firewall-cmd --add-port 1431/tcp # firewall-cmd --add-port 1431/tcp --permanent
En RHEL/CentOS/Scientific Linux 6 y superior, también debe actualizar los permisos de selinux para permitir el puerto.
# iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1431 -j ACCEPT # semanage port -a -t ssh_port_t -p tcp 1431
Finalmente, reinicie el servicio SSH para que se apliquen los cambios.
# systemctl restart sshd [On SystemD] OR # service sshd restart [On SysVinit]
Ahora veamos cómo sincronizar archivos usando rsync con un puerto no estándar.
Cómo Rsync con un puerto SSH no estándar
Ejecute el siguiente comando desde el terminal para sincronizar archivos/carpetas usando Rsync con un puerto ssh no estándar.
# rsync -arvz -e 'ssh -p <port-number>' --progress --delete [email protected]:/path/to/remote/folder /path/to/local/folder
Para el propósito de este tutorial, usaré dos sistemas.
IP Address: 192.168.1.103 User name: tecmint Sync folder: /backup1
Operating System: Ubuntu 14.04 Desktop IP Address: 192.168.1.100 Sync folder: /home/sk/backup2
Sincronicemos el contenido de la carpeta /backup1
del servidor remoto con la carpeta /home/sk/backup2/
de mi sistema local.
$ sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email protected]:/backup1 /home/sk/backup2
[email protected]'s password: receiving incremental file list backup1/ backup1/linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb 752,876 100% 13.30MB/s 0:00:00 (xfr#1, to-chk=2/4) backup1/linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb 9,676,510 100% 12.50MB/s 0:00:00 (xfr#2, to-chk=1/4) backup1/linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb 56,563,302 100% 11.26MB/s 0:00:04 (xfr#3, to-chk=0/4) sent 85 bytes received 66,979,455 bytes 7,050,477.89 bytes/sec total size is 66,992,688 speedup is 1.00.
Comprobemos el contenido de la carpeta /backup1/
en el servidor remoto.
$ sudo ls -l /backup1/
total 65428 -rw-r--r-- 1 root root 9676510 Dec 9 13:44 linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb -rw-r--r-- 1 root root 752876 Dec 9 13:44 linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb -rw-r--r-- 1 root root 56563302 Dec 9 13:44 linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
Ahora, revisemos el contenido de la carpeta /backup2/
del sistema local.
$ ls /home/sk/backup2/
backup1
Como puede ver en el resultado anterior, el contenido de /backup1/
se ha copiado correctamente en el directorio /home/sk/backup2/
de mi sistema local.
Verifique el contenido de la carpeta /backup1/
:
$ ls /home/sk/backup2/backup1/
linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
Mira, las carpetas del sistema local y remoto tienen los mismos archivos.
Conclusión
Sincronizar archivos/carpetas usando Rsync con SSH no solo es un método fácil, sino también rápido y seguro. Si está detrás de un firewall que restringe el puerto 22, no se preocupe. Simplemente cambie el puerto predeterminado y sincronice archivos como un profesional.