Cómo sincronizar archivos/directorios utilizando Rsync con un puerto SSH no estándar

Hoy estaremos discutiendo cómo sincronizar archivos usando rsync con un puerto SSH no estándar. Puede preguntarse por qué necesitamos usar un puerto SSH no estándar. Es debido a razones de seguridad. Todo el mundo sabe que 22 es el puerto predeterminado de SSH.

Rsync Files Over SSH Non-standard Port

Por lo tanto, es obligatorio cambiar el número de puerto predeterminado de SSH a algo diferente que sea muy difícil de adivinar. En tales casos, ¿cómo sincronizará sus archivos/carpetas con su servidor remoto? No se preocupe, no es tan difícil. Aquí veremos cómo sincronizar archivos y carpetas usando rsync con un puerto SSH no estándar.

Como probablemente sepa, rsync, también conocido como Remote Sync, es una herramienta rápida, versátil y potente que se puede utilizar 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 del manual:

# man rsync

O consulte nuestra guía anterior desde el siguiente enlace.

  1. Rsync: 10 Ejemplos Prácticos del Comando Rsync en Linux

Cambiar el Puerto SSH a un Puerto no Estándar

Como todos sabemos, por defecto rsync utiliza el puerto SSH predeterminado 22 para sincronizar archivos de local a hosts 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 

Encuentre la siguiente línea. Descomente y cambie el número de puerto de su elección. Le recomiendo que elija un número que sea muy difícil de adivinar.

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 en 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 versiones posteriores, 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 los cambios surtan efecto.

# 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 sincronizar con un puerto SSH no estándar

Ejecute el siguiente comando desde la terminal para sincronizar archivos/carpetas usando Rsync con un puerto ssh no estándar.

Sintaxis:
# rsync -arvz -e 'ssh -p <port-number>' --progress --delete user@remote-server:/path/to/remote/folder /path/to/local/folder

Para este tutorial, usaré dos sistemas.

Detalles del Sistema Remoto:

IP Address: 192.168.1.103
User name: tecmint
Sync folder: /backup1

Detalles del Sistema Local:

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 en la carpeta de mi sistema local /home/sk/backup2/.

$ sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email protected]:/backup1 /home/sk/backup2
Salida de Ejemplo
[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.

Veamos el contenido de la carpeta /backup1/ en el servidor remoto.

$ sudo ls -l /backup1/
Salida de Ejemplo
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, veamos el contenido de la carpeta /backup2/ del sistema local.

$ ls /home/sk/backup2/
backup1

Como ves en la salida anterior, el contenido de /backup1/ ha sido copiado con éxito al directorio /home/sk/backup2/ de mi sistema local.

Verificar el contenido de la carpeta /backup1/:

$ ls /home/sk/backup2/backup1/
Salida de ejemplo
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

Observa, tanto las carpetas del sistema remoto como local tienen los mismos archivos.

Conclusión

Sincronizar archivos/carpetas usando Rsync con SSH no solo es fácil, sino también un método rápido y seguro. Si estás detrás de un firewall que restringe el puerto 22, no te preocupes. Simplemente cambia el puerto predeterminado y sincroniza archivos como un profesional.

Source:
https://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/