Premier post dans la partie blog - informatique (j'utilise ces deux mots accouplés au risque de facher Teddy 
Ceci va surtout me servir de notes techniques sur des sujets informatiques variés vu que je suis autant amené à faire de l'administration qu'à faire du développement.
(ok, c'est pas la partie qui amènera Sonia à me dire que mon blog est intéressant).
--
Retour au sujet (c'est là où les non-informaticiens peuvent décrocher).
Comment mettre en place un système sécurisé de backup de plusieurs répertoires vers plusieurs serveurs (par sécurisé, j'entend que la connexion distante peut seulement utiliser rsync et pas se connecter sur la machine)
En utilisant rsync et ssh et les mécanismes de clés privées/publiques.
Le serveur a backuper est appelé dataServer, le distant remoteServer
Sur dataServer, en root (pour avoir accès à tous les fichiers)
# mkdir -p /usr/share/keys
# ssh-keygen -t dsa -b 2048 -f /usr/share/keys/key-rsync
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [tapez entrer]
Enter same passphrase again: [tapez entrer]
Your identification has been saved in /usr/share/keys/key-rsync.
Your public key has been saved in /usr/share/keys/key-rsync.pub.
The key fingerprint is:
xx:xx:xx...
# scp /usr/share/keys/key-rsync.pub remoteUser@remoteServer:~
Sur le remoteServer :
# mkdir .ssh ; chmod 700 .ssh
# cat key-rsync.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
Toujours sur le même serveur, éditez le fichier ~remoteUser/.ssh/authorized_keys et rajoutez au début de la ligne ajoutée, juste avant le ssh-dss (normalement la dernière)
from="217.167.120.134",command="~/backup/validate-rsync.sh"
Ensuite, créez le fichier ~/backup/validate-rsync.sh qui contiendra les sources :
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
Puis un petit chmod +x ~/backup/validedate-rsync.sh
Ce script permettant de valider ou non la connexion au rsync seulement.
Sur le dataServer, créer un fichier rsync-backup.sh peut importe où sur le système
#!/bin/sh
RSYNC="/usr/bin/rsync"
OPTIONS="-az --delete"
SSH=/usr/bin/ssh
KEY=/usr/share/keys/key-rsync
PATHS=(/www/ /etc/ /home/) # Must end with a /
DESTINATION=(192.168.0.10 backup.domaine.com foo.bar.com)
DEST_USER="rsync"
DEST_DIR="/home/rsync/"
for remoteServer in ${DESTINATION[@]}; do
for directory in ${PATHS[@]}; do
directoryDest=`echo $directory | awk ' BEGIN { FS = "/"; } ; {print $(NF-1) }'`
echo "$RSYNC $OPTIONS -e \"$SSH -i $KEY\" $directory \ $DEST_USER@$remoteServer:$DEST_DIR$directoryDest"
$RSYNC $OPTIONS -e "$SSH -i $KEY" $directory \ $DEST_USER@$remoteServer:$DEST_DIR$directoryDest
done
done
Reproduire la procédure des clés niveau remoteServer sur les autres machines qui vont servir de support de backup.
Mettre ce script dans la crontab (www.google.com pour plus d'info dessus)
et voila, ça devrait aller tout seul.
Source : http://www.jdmz.net/ssh/ d'où viennent les idées/infos