Grsync es una interfaz gráfica (GUI) para rsync, la herramienta para la línea de comandos de sincronización de directorios disponible en Linux.
Si bien Grsync no permite acceder a toda la potencia que posee
rsync, puede ser utilizado con mucha facilidad para sincronizar
directorios (locales y remotos). Además podemos crear fácilmente perfiles, con
diferentes tipos de copias mucho más fácilmente que con rsync; y combinarlos
con Cron para que se vayan ejecutando en diferentes momentos.
Para instalar grsync solo tenemos que ir a una terminal y
allí:
~# apt install grsync
Empezamos
Lo primero vamos a ver el interfaz de Grsync al detalle:
- En este desplegable podemos crear nuevos perfiles.
- Aquí podemos navegar por las carpetas del disco/discos para elegir que archivos copiar y donde; también podemos introducir la ruta a mano.
- Aquí tenemos todas las opciones adicionales para las copias, como veis son muchas.
- En esta pestaña tenemos aun mas opciones adicionales.
Copias en remoto con Grsync. Preparativos.
→He implementado un servidor SSH con un usuario (redes) y contraseña en una máquina con Debian 10 con dirección IP 172.16.20.2 y como cliente usaré una máquina con Linux Mint; pero no es recomendable la opción usuario/contraseña en servidores remotos abiertos a internet por razones obvias de seguridad. Es necesario que Rsync y Grsync estén instalados tanto en el servidor como en el cliente.
→He creado una carpeta llamada datos con algunos archivos de texto.
→También he usado UFW para configurar el cortafuegos y le abrimos el puerto 22 TCP.
~# apt intall ufw
~# ufw allow 22 tcp
Podemos comprobar que está activado correctamente con:
~# ufw status verbose
→Esto último también lo hacemos en
la máquina cliente; En Linux Mint tenemos Ufw preinstalado con interfaz
gráfico. Con todo listo seguimos.
En el lado del servidor.
Instalamos openssh rsync y grsync con la terminal
~# apt update
~# apt install openssh-server rsync grsync
Configuramos el servidor editando el archivo de configuración
sshd_config con nuestro editor favorito. En mi caso usaré Nano.
~# nano /etc/ssh/sshd_config
Y allí editamos algunas líneas:
Port 22
AddressFamily inet # para ipv4, para ipv6 sería inet6
ListenAddress
172.16.20.2
PasswordAuthentication yes
AllowUsers redes #el nombre del usuario creado
Guardamos el archivo y arrancamos el servidor con:
~# systemctl start sshd
Podemos comprobar que esta todo correcto con:
~# systemctl status sshd
En el lado del cliente.
Instalamos rsync y grsync.
~# apt update
~# apt install rsync grsync
Abrimos una terminal y empezamos una sesión ssh en una terminal con:
~# ssh redes@172.16.20.2
obtenemos un mensaje de terminal como la imagen inferior, en el que se
nos comunica que vamos a añadir el host 172.16.20.2 a la lista de host
conocidos y la clave ECDSA del este host, además se nos pide confirmación y la
contraseña del usuario.
Ahora abrimos el interfaz de Grsync y aquí rellenamos los formularios con el origen de los archivos a respaldar y el destino, podemos dejar las opciones por defecto como en la imagen inferior.
Hacemos clic en el icono de “Ejecutar” de la esquina arriba a la derecha, os lo indico en la imagen inferior, porque según la versión del escritorio que usemos cambiará el icono.
Nos aparece un prompt para introducir la contraseña y ya vemos como se hace la copia, como los archivos son muy pequeños la copia es instantánea.
Podemos comprobar en la máquina-server que los archivos se copiaron. |
El problema de realizar las copias así es que es un poco complicado de automatizar y hay que pasar la contraseña al prompt cada vez que se hace la copia, así que vamos a realizar la misma tarea esta vez con clave de cifrado RSA sin contraseña con lo que automatizarla será mucho mas fácil.
Aparte tiene otro beneficio adicional desde el punto de vista de la
seguridad: es mas difícil de violentar, pues atacante necesitaría sustraer las
claves, o bien del servidor o bien del cliente, lo que es mucho mas difícil
que obtener una contraseña. Eso si, requiere de un poquito mas de trabajo,
pero tampoco demasiado; vamos a verlo.
En el lado del cliente.
Creamos una clave RSA con el comando ssh-keygen.
~# ssh-keygen -f /home/redes/.ssh/mint_key.pub -t rsa -b
4096
• -f le pasamos el nombre de archivo junto con la
ruta a su ubicación.
• -t tipo de clave.
• -b bits del cifrado cuanto mas alto mas fuerte.
Durante el proceso se nos requerirá una contraseña para la clave, la
dejamos en blanco haciendo Intro directamente. Con la clave generada tenemos
que exportarla al servidor en la terminal con:
~# ssh-copy-id redes@172.16.20.2
Es posible que nos salte en algún momento un error “Agent admitted failure using the key”, lo corregimos reiniciando la conexión y luego usando el comando:
~# ssh-add
En el lado del servidor.
Reconfiguramos el ssh server para funcionar con RSA, editando el archivo de configuración.
~# nano /etc/ssh/sshd_config
# editamos las líneas:
PasswordAuthentication no
PubkeyAuthentication yes
RSAAuthentication
yes #está deprecated pero yo lo sigo usando de momento
AuthorizedKeysFile
.ssh/authorized_keys .ssh/authorized_keys2
ChallengeResponseAuthentication
no #suele venir comentada, pero comprobadlo por si acaso
Guardamos el archivo, reiniciamos el servidor y cerramos la conexión. Con todo listo vamos a arrancar Grsync y como antes vamos a intentar hacer la copia
Esta vez no ha aparecido ningún prompt para pedirnos la contraseña, ahora
podremos automatizarlo mucho mas fácilmente.
Para esta entrada he usado Grsync las opciones más básicas pero con un poco de investigación podemos crear diferentes perfiles con diferentes características de la copia (copias incrementales por ej.) y ejecutarlos periódicamente.
Para ejecutar los perfiles es muy simple en la terminal:
~# grsync -e nombre_del_perfil
.. que es facilísimo de implementar en un script en bash o crear un
servicio systemd a la hora de automatizarlo sin necesidad de saber apenas
programar.
Y bueno esto es todo por hoy espero que os sea útil la entrada.
No hay comentarios:
Publicar un comentario