En este tutorial vamos a configurar rsync y crontab para sincronizar fichero entre dos maquinas sin utilizar contraseña y programarle unos horarios de ejecución.
Para evitar que cada vez que se lanza un script de sincronización pida la contraseña del usuario del servidor remoto con el que se está sincronizando vamos a crear un fichero con una clave que alojaremos en el servidor remoto para evitar tener que introducir la contraseña cada vez que sincronicemos.
Generar clave
Para generar la clave en el servidor destino utilizaremos el siguiente comando:
ssh-keygen -t rsa -N "Loremipsumdolorsitamet,consecteturadipiscingelit.Maecenasipsum." -f paxwkfile_rsa
Con el síguete resultado:
root@webserver:~# ssh-keygen -t rsa -N "Loremipsumdolorsitamet,consecteturadipiscingelit.Maecenasipsum." -f paxwkfile_rsa Generating public/private rsa key pair. Your identification has been saved in paxwkfile_rsa. Your public key has been saved in paxwkfile_rsa.pub. The key fingerprint is: SHA256:fLPHCILhUDzSStsrRxGXXSyeOqn4NLC/qo0V18P7C5E root@webserver02 The key's randomart image is: +---[RSA 2048]----+ | oo..o o. | | o.=.. o . | | ..=.o . o | | ooo= oo | | o.+.EoS o | | .=o += o = | | o+o.o. o o | | +.o.. o . | |o.oo+. o. | +----[SHA256]-----+ root@webserver:~#
Si todo ha ido bien tendremos en nuestro directorio dos ficheros nuevos, uno con la clave privada y otro con la clave pública:
root@webserver02:~# ls -ltr pax -rw-r--r-- 1 root root 398 May 19 08:18 paxwkfile_rsa.pub -rw------- 1 root root 1876 May 19 08:18 paxwkfile_rsa root@webserver02:~#
El siguiente paso será moverlas al directorio .ssh de nuestro home que será donde estén todas las claves:
root@webserver:~# cp *pax* ./.ssh/
Copiar la clave pública al servidor
Con nuestras claves generadas nos quedará copiar nuestra clave pública en el servidor, una vez más en el directorio .ssh del home de nuestro usuario:
root@webserver02:~/.ssh# ssh-copy-id -i ./paxwkfile_rsa.pub root@192.168.1.252
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "./paxwkfile_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.1.252's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.1.252'"
and check to make sure that only the key(s) you wanted were added.
Con este comando lo que hacemos es añadir la clave que acabamos de generar al fichero: /root/.ssh/authorized_keys
De esta manera cada vez que nos conectemos por ssh a nuestro servidor no nos volverá a pedir contraseña.
Sincronización de carpetas
Os dejo el comando que utilizo para sincronizar carpetas con el servidor:
rsync -avhe ssh --delete /dir/dir/carpeta_origen/ usuario@servidor:/dir/dirrsync/carpeta_destino/