Backup de machine distante avec rdiff-backup

user_icon admin | icon2 Système | icon4 22/5/2013 20h57| Type doc: article| Type File: xml| icon3 No Comment


1. Backup de machine distante avec rdiff-backup

Backup de la machine distante www.exemple.fr vers la machine locale bkp.exemple.fr.

Une clé sera partagée entre les machines pour autoriser l'accès au service de backup. Ce service sera executé par un utilisateur privilegié, au hasard l'utilisateur 'backup' qui existe par défaut sur Debian.

  cat /etc/passwd | grep backup
  backup:x:34:34:backup:/var/backups:/bin/false
[/lang]

Installation:

Sur les deux machines:

  apt-get install rdiff-backup
  mkdir /var/backups/.ssh
  chown -R backup /var/backups/
[/lang]

Sur la machine locale bkp.exemple.fr :

Création de la clé sans passphrase :

  su - backup
  $ pwd
  /var/backups
  $ ssh-keygen -t rsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/var/backups/.ssh/id_rsa): /var/backups/.ssh/id_rsa_bkp_backup
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in /var/backups/.ssh/id_rsa_bkp_backup.
  Your public key has been saved in /var/backups/.ssh/id_rsa_www_backup.pub.
  The key fingerprint is:
  09:bd:5b:e4:8b:e1:c2:94:03:58:e9:1b:71:d3:7e:0f backup@bkp.exemple.fr
  The key s randomart image is:
  +--[ RSA 2048]----+
  |       . .       |
  |      +.o .      |
  |     +...o       |
  |    . + .+. E    |
  |       +S .o o   |
  |      . ++o   .  |
  |        .+o      |
  |         ..+     |
  |         .+      |
  +-----------------+
[/lang]

Copier le fichier /var/backups/.ssh/id_rsa_bkp_backup.pub genéré par la commande précédente vers /var/backups/.ssh/authorized_keys2 de la machine à sauvegarder.

    scp /var/backups/.ssh/id_rsa_bkp_backup.pub
    root@www.exemple.fr:/var/backups/.ssh/authorized_keys
[/lang]

Création d'un fichier ~/.ssh/config pour faciliter l'accès à la machine www.exemple.fr

  cat ~/.ssh/config
  host www-backup
          hostname www.exemple.fr
          user backup
          identityfile /var/backups/.ssh/id_rsa_bkp_backup
          port 22
[/lang]

Sur la machine distante modifier le fichier /var/backups/.ssh/authorized_keys2 pour que la commande suivante s'éxécute lors de la connexikon de l'utilisateur 'backup'

  command="rdiff-backup --server --restrict-read-only /",from="bkp",no-port-forwarding,no-X11-forwarding,no-pty
  ssh-rsa AAAAB3Nz ... aC1yc2E backup@bkp
[/lang]

On s'assure que l'authentification ssh par authorized_keys est permise sur la machine distante (ce qui est le cas par défaut sous Debian). Dans le fichier de config du serveur sshd ( /etc/ssh/sshd_config ):

AuthorizedKeysFile      %h/.ssh/authorized_keys2
[/lang]

A ce niveau la commande suivante lance rdiff-backup --server en tant que 'backup' et sans mot de passe sur la machine distante.

$ rdiff-backup www-backup::/etc /var/backups/www.exemple.fr/etc
[/lang]

Malheureusement 'backup' ne dispose pas de droit suffisant pour accéder à tous les fichiers à sauvegarder. Pour y remédier nous allons utiliser 'sudo':

apt-get install sudo
[/lang]

Et ajouter à la fin du fichier /etc/sudousers :

backup      ALL= NOPASSWD: /usr/bin/rdiff-backup --server --restrict-read-only /
[/lang]

Et pour finir nous utiliserons cette commande pour sauvegarder le répertoire /etc de la machine distante (www-backup):

$ rdiff-backup --remote-schema 'ssh -C %s nice sudo /usr/bin/rdiff-backup --server --restrict-read-only /'  www-backup::/etc /var/backups/www.exemple.fr/etc
[/lang]

Du coup nous pouvons maintenant retirer la commande ''rdiff-backup --server ...' du fichier /var/backups/.ssh/authorized_keys.


Add_a_comment

Validator_logo
Catapulse v0.06
( 0.079508 s)