Relación de confianza SSH y Rsync

El siguiente procedimiento y script nos permite realizar copias de carpetas de forma total e incremental entre dos servidores de forma mas rapida y segura que a traves de un scp y adicionalmente concervando los permisos y atrubutos del servidor de origen.

Lo primero que vamos ha hacer es crear una realacion de confianza por SSH entre los dos servidores lo cual quiere decir que entre servidores y usuarios no se va a solicitar contraseña a traves de ssh en este caso entre los que se va ha realizar la copia de carpetas, para ello se debe ejecutar:


Para este ejemplo se utilizan las maquinas caronte (192.168.0.1) y hades (192.168.0.2) y la copia se realizara desde caronte hacia hades

Caronte -> Hades

[root@caronte ~]# ssh-keygen -d
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:

Una vez generada la llave continuamos con:

[root@caronte ~]# cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys2

Recuerde que el carácter ~ en sistemas Linux representa el HOME del usuario, es importante tener en cuenta que este procedimiento genera relaciones de confianza entre maquinas y usuarios, si el procedimiento se genera como root en ambas maquinas, esta relación quedara únicamente entre estos usuarios.

[root@caronte ~]# chmod 400 ~/.ssh/authorized_keys2

Por ultimo se procede a comprimir la carpeta .ssh y pasarla al otro servidor para ser descomprimida en la carpeta /root y el el HOME de usuario con el que se quiera tener esta relación

[root@caronte ~]# tar cvfzp ssh.tgz /root/.ssh
[root@caronte ~]# scp ssh.tgz 192.168.0.2:/root
[root@caronte ~]# ssh 192.168.0.2
[root@hades ~]# tar xvfzp ssh.tgz


Una vez realizados los pasos anteriores, podemos utilizar el siguiente script, en mi caso lo dejo ubicado en la carpeta /usr/local/src

[root@caronte ~]# vi /usr/local/src/rsync.sh

#!/bin/bash

# my_rsync.sh
# timm.schenker@urz.uni-heidelberg.de
#
# IP Destino
master="192.168.1.2"

# Archivos y carpetas a syncronizar
rsync_dirs="/home/ /var/lib/vmware /opt/WorldOfGoo /chroot/"
rsync_files="/etc/issue"

# Lockfile para el control de escritura
lockfile_slave="/var/lock/subsys/mirror.lock"
lockfile_master="/var/lock/subsys/my_rsync.lock"

# Syslog
slog="logger -t my_rsync "

if [ -e $lockfile_slave ]; then
$slog "my_rsync nicht gestartet: $lockfile_slave existiert!"
exit 1
fi


if [ -e $lockfile_master ]; then
$slog "my_rsync nicht gestartet: $lockfile_master existiert!"
exit 1
fi


touch $lockfile_master


if [ "$(/sbin/ifconfig eth0 | grep $master)" != "" ]; then
othernode=$slave
else
othernode=$master
fi

for i in $rsync_dirs; do
(rsync --rsh=$(which ssh) -aurlq --delete $i/ $othernode:$i) || {
$slog "rsync Fehler bei Verzeichnis $i"
}
done

for i in $rsync_files; do
(rsync --rsh=$(which ssh) -aurlq $i $othernode:$i) || {
$slog "rsync Fehler bei Datei $i"
}
done


rm -f $lockfile_master
exit 0



Basta con cambiar únicamente los parámetros que se encuentran en rojo al inicio del script que son:

master="192.168.1.2" Dirección IP de Hades en este caso o destino donde se va a realizar la copia
rsync_dirs="/home/ /var/lib/vmware /opt/WorldOfGoo /chroot/" Carpetas que se vana sincronizar
rsync_files="/etc/issue" archivos que se van a sincronizar





No hay comentarios:

Publicar un comentario