Ceci est une ancienne révision du document !


La sauvegarde se faisant au travers de ssh, il faut installer le paquet openssh-server sur le poste à sauvegarder.

De plus, il est nécessaire que l'utilisateur Backuppc puisse se connecter en SSH sur les postes clients.
Pour se faire, vous pouvez utiliser la méthode standard que vous trouverez ici qui utilise le compte root désactivé par défaut sur Ubuntu.
Cependant, la méthode suivante, utilisable pour toute distribution ayant sudo, qui vous permettra de ne pas avoir besoin d'activer le compte root ni de lui autoriser des connexions via SSH.

Plus simple à mettre en place.

Manipulations sur le serveur de sauvegarde.

  • Passer en utilisateur "backuppc"
    sudo -i -u backuppc
  • Mettez en place un système de clé publique/clé privée à savoir:
    • Générer le couple clef publique et clef privée sans mettre de mot de passe
      ssh-keygen -t rsa -b 2048
    • Vérifier que la clé est bien générée
      cat ~/.ssh/id_rsa.pub
    • et que ses droits sont corrects
      ls -la ~/.ssh/
      drwxr-xr-x 2 backuppc backuppc 4096 2011-07-17 17:19 .
      drwxr-x--- 8 backuppc backuppc 4096 2011-07-21 13:57 ..
      -rw------- 1 backuppc backuppc 1671 2011-07-17 17:10 id_rsa
      -rw-r--r-- 1 backuppc backuppc  397 2011-07-17 17:10 id_rsa.pub
      -rw-r--r-- 1 backuppc backuppc 4862 2011-07-17 19:58 known_hosts

      Si les droits ne sont pas corrects, utiliser la commande chmod pour modifier les permissions

Manipulations sur les postes clients.

Placer la clef publique
  • Créer le répertoire /root/.ssh si il n'existe pas encore.

sudo mkdir /root/.ssh

  • Editer le fichier /root/.ssh/authorized_keys avec les droits d'administration
     sudo vim /var/backups/.ssh/authorized_keys 
  • Ajouter dans le fichier, la clef publique de l'utilisateur "backuppc" précédemment générée 1). (Vous pouvez par exemple éditer les deux fichiers et faire un simple copier/coller.)
  • Pour plus de sécurité, rajouter au début du fichier la directive
    from="serveur"
  • Vous devriez désormais avoir:
  • Sous le compte root
sudo -i
cat ~/.ssh/authorized_keys
from="serveur" ssh-rsa AAAAB3N123456789xyz.......== backuppc@serveur
Configuration de sshd

Modifier avec les droits d'administration le fichier /etc/ssh/sshd_config

**/etc/ssh/sshd_config**
PermitRootLogin without-password

Avec cette directive les connexions SSH de root ne seront pas possible avec un mot de passe (qui par défaut n'est pas utilisé sous Ubuntu)

Seul les connexions utilisant une authentification par clef seront possible, et uniquement de l'adresse du serveur si la directive from= est utilisée dans le fichier authorized_keys.

Il sera donc possible de paramétrer indépendamment les possibilités d'authentification via SSH des autres utilisateurs. Il ne faudra cependant pas oublier d'ajouter root en cas d'usage des directives AllowUsers ou AllowGroups.

Test de connexion SSH

Depuis le serveur de sauvegarde, tenter une première connexion ssh vers le poste à sauvegarder pour l'utilisateur "backuppc".

sudo -i -u backuppc
ssh root@client

Répondre "yes", ce qui ajoutera votre client à la liste des known hosts2).

Méthode avec sudo

Manipulations sur le serveur de sauvegarde

Cette partie est commune à la méthode standard

Manipulations sur les postes clients

Nous allons utiliser le compte "backup". Ce compte est pré-existant sous Ubuntu selon la norme FHS . Comme on peut le voir dans /etc/passwd , le répertoire personnel de cet "utilisateur" est /var/backups.

Si vous avez plusieurs clients vous pouvez utiliser le très pratique cssh
Placer la clef publique.

Pour chacun des clients:

  • Créer le répertoire .ssh dans le Dossier Personnel
    sudo mkdir /var/backups/.ssh
  • Editer le fichier /var/backups/.ssh/authorized_keys avec les droits d'administration
     sudo vim /var/backups/.ssh/authorized_keys 
  • Ajouter dans le fichier, la clef publique de l'utilisateur "backuppc" précédemment générée 3). (Vous pouvez par exemple éditer les deux fichiers et faire un simple copier/coller.)
  • Pour plus de sécurité, rajouter au début du fichier la directive
    from="serveur"
  • Vous devriez désormais avoir:
  • Sous le compte backup
sudo -i -u backup 
cat ~/.ssh/authorized_keys
from="serveur" ssh-rsa AAAAB3N123456789xyz.......== backuppc@<serveur>
Configuration de sshd.

Modifier avec les droits d'administration le fichier /etc/ssh/sshd_config pour indiquer qu'il n'y pas besoin d'autoriser root, ni des connexions par mot de passe pour vos sauvegardes.

/etc/ssh/sshd_config
PermitRootLogin no
Configuration de sudo.

À l'aide de visudo mettez dans le fichier sudoers :

backup ALL=NOPASSWD: /usr/bin/rsync

Ceci donnera à l'utilisateur "backup" le droit sudo pour lancer rsync sans demande de mot de passe.

Pour pouvoir mener à bien cette opération, il faut revenir à un utilisateur qui ait les droits sudo, en fait à l'utilisateur que vous étiez avant de passer à l'utilisateur backup. Pour cela :

exit

puis simplement :

sudo visudo
Test de connexion SSH

Depuis le serveur de sauvegarde, tenter une première connexion ssh vers le poste à sauvegarder pour l'utilisateur "backuppc".

sudo -i -u backuppc
ssh backup@<client>

Répondre "yes", ce qui ajoutera votre client à la liste des known hosts4).

En cas d'erreur SSH vous pouvez rendre la commande plus volubile avec l'option -v de ssh. Regarder aussi /var/log/syslog sur le poste à sauvegarder. Dans tous les cas jeter un œil sur la page consacrée à ssh. En cas de blocage suite à la réinstallation du poste à sauvegarder, la partie traitant de la gestion des clefs vous sera sûrement d'une grande aide.

Paramétrer l'usage de ce compte par backuppc

Par l'interface Web

onglet Xfert → pour rsync → chapitre Chemins/Commandes/Args Rsync indiquer pour:

  • RsyncClientCmd
    $sshPath -q -x -l backup $hostIP /usr/bin/sudo $rsyncPath $argList+
  • RsyncClientRestoreCmd
    $sshPath -q -x -l backup $hostIP /usr/bin/sudo $rsyncPath $argList+ 
Depuis le fichier « /etc/backuppc/config.pl »

Modifier avec les droits d'administration le fichier /etc/backuppc/config.pl/ comme suit :

/etc/backuppc/config.pl
# $Conf{RsyncClientCmd} = '$sshPath -q -x -l root $hostIP $rsyncPath $argList+';
$Conf{RsyncClientCmd} = '$sshPath -q -x -l backup $hostIP /usr/bin/sudo $rsyncPath $argList+';
# $Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $hostIP $rsyncPath $argList+';
$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l backup $hostIP /usr/bin/sudo $rsyncPath $argList+';

Ool


1)
donc visible dans le fichier id_rsa.pub du répertoire caché .ssh dans le Dossier Personnel du serveur de backup
2) , 4)
hôtes connus
3)
donc visible dans le fichier id_rsa.pub du répertoire caché .ssh dans le Dossier Personnel du serveur
  • utilisateurs/ool/brouillon.1349266105.txt.gz
  • Dernière modification: Le 03/10/2012, 14:08
  • par 0ol