Servicio Rsync automatizado
En el enunciado del ejercicio se nos solicita que la tarea de sincronización Rsync se ejecute de forma automática cada 15 minutos.
Generar clave SSH
Por motivos de seguridad no vamos a usar la misma clave SSH. Por motivos intrínsecos a la ejecución del comando (debe ejecutarse de forma automática, sin interacción del usuario) la clave no debe tener contraseña simétrica.
Desde el cliente, vamos a generarla. uando nos pida introducir contraseña, haremos clic en Intro para no fijar ninguna:
pablo@cliente:~$ ssh-keygen -t rsa
La guardaremos en ~/.ssh/backup.
Copiar clave pública a servidor
Como ya hemos visto en el apartado de Servicio SSH autenticado con clave pública-privada, ocurren cosas raras al intentar añadir las claves de un usuario desde la GUI web.
Iniciando en el propio servidor (mediante SSH, por ejemplo), añadimos la clave publica al archivo /srv/dev-disk-by-id-md-name-nas-RAID5Carpet4You/home/user/.ssh/authorized_keys.
Después de copiarla tendremos, al menos, dos clave: * La clave pública para el inicio SSH “típico”. * La clave pública que utilizaremos para la autenticación contra Rsync.
Veamos un ejemplo:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+cdESzhtIoTq0xWrUeQNYg6VkMOg1cNj7TDC+fXXIPdj10TFmitQ7if5PgcyOVPccEJ9TF2+lCcAbgPSNxUjptY+IjV39exucVUN1hdRRxxBQOl6YDiG4CND5oMUqyHFzYR7Oornh+hkaw89MOzRU/K9xRsYoRmrK8BeYE4gxsyeCA5vNf8Z2imukgOF3u7/zvQF3Z4oZYkGG2X8qFlgS1bfmwZ7kjT0JFjtEd6+gIUUuZpI0s3SOpX815doJQS0gSHFJj4Qo9MhjvnIVVd1Og0arZsKXysCZnEKQuFYEVWmH7dcWgIDH2aHeZ9LtEO7JcBu1DblYwgcFqiF8T0mP
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDayMy/MPci3iiY+bVSuB7/AnkdmxcijnefOAY1hfdOmI5xz7f/I6DJ/xdkskqhXOl0OgB2kyOnaIys6drCC1+rNyOTuWemg/Hn8XRgcudGWmyMQ8XYUwrWyitGHa2LTdHAiLM0i1LX67svACVWInAS7MPCn02uIfr5eBzH3moQoTjsVlvcLj4pnUAVQPgDqqI1nf6huKmzJprwQkmaoozJ93/YF7+hJ6eakeFOSrD/ZvaWb+zDdC+RdM3qwOe669iIhiK7O9lwLf7NCuhvXo1eqkMGj+Ocf9OnyNWUKzdqdEqAELV7mioU2qgE8vq+WtYb/eODTgGzys/TfXCn7m+B user@server-carpet
Probar conexión a carpeta
Para comprobar si funciona Rsync debemos generar algunos archivos y después comprobar si se copian.
user@cliente:~$ sudo rsync -avRh -e "ssh -i /home/user/.ssh/backup" prueba/ user@nas.corp.carpet4you.site:/srv/dev-disk-by-id-md-name-nas-RAID5Carpet4You/home/user/
Este es el resultado:
Tarea cron
Añadiremos la tarea crontab con el siguiente comando:
user@cliente:~$ sudo su #Necesitamos que la tarea la ejecute root
user@cliente:~$ crontab -e
# En el archivo que se nos abre añadimos el siguiente comando:
*/15 * * * * sudo rsync -aRh -e "ssh -i /home/user/.ssh/backup" /home/user/prueba user@nas.corp.carpet4you.site:/srv/dev-disk-by-id-md-name-nas-RAID5Carpet4You/home/user/
Comprobación cron
Crearemos algún archivo en la carpeta prueba y veremos si se copia en el servidor.
Tip
¡Funciona!
Limitar acceso desde IP cliente
Como medida de seguridad adicional, limitaremos el uso de la clave pública. Indicaremos que únicamente se pueda utilizar desde el equipo cliente. Para identificar al equipo usaremos su clave pública.
from="192.168.56.109" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDayMy/MPci3iiY+bVSuB7/AnkdmxcijnefOAY1hfdOmI5xz7f/I6DJ/xdkskqhXOl0OgB2kyOnaIys6drCC1+rNyOTuWemg/Hn8XRgcudGWmyMQ8XYUwrWyitGHa2LTdHAiLM0i1LX67svACVWInAS7MPCn02uIfr5eBzH3moQoTjsVlvcLj4pnUAVQPgDqqI1nf6huKmzJprwQkmaoozJ93/YF7+hJ6eakeFOSrD/ZvaWb+zDdC+RdM3qwOe669iIhiK7O9lwLf7NCuhvXo1eqkMGj+Ocf9OnyNWUKzdqdEqAELV7mioU2qgE8vq+WtYb/eODTgGzys/TfXCn7m+B user@server-carpet
Solo para valientes
Cabe la posibilidad de restringir, mediante otra anotación en el archivo authorized_keys, qué comandos puede ejecutar el usuario.