Sauvegardes distantes windows-linux via ssh (v2)
- Détails
- Publié le jeudi 24 novembre 2011 17:18
Suite à certains changements, l'utilisation de cygwin sur une machine windows est devenue délicate. Le principal changement ici est donc l'utilisation de virtualbox sur la machine windows, pour virtualiser un système linux debian. Des aménagements sont cependant nécessaires pour garder l'automatisation complète du système. Cependant le système de sauvegarde (ssh, scp, cygwin) est conservé. Dupdup.eu vous présente donc la version 2 de sa sauvegarde windows-linux.
I Installation de Debian sur machine virtuelle, sur le poste distant
II Configuration de ssh
III Scripts de sauvegarde
IV Automatisation
I Installation de Debian sur machine virtuelle, sur le poste distant
I-1) Virtualbox, debian
Télécharger virtualbox, et l'installer sur l'hote windows. Installer ensuite une version de debian (je conseille la version stable, mais dans tous les cas, cette machine sera globalement "peu" utilisée, dans le sens où seuls ssh, scp et rsync sont utiles). Une taille de partition de 8 à 10 Go sera largement suffisante.
Configurez le réseau afin qu'il soit facilement configurable et fonctionnel: Le mode NAT semble un bon choix, il s'agit de faire comme si la machine virtuelle avait une carte réseau connectée indépendamment.
I-2) Additions client, dossiers partagés
Utiliser la fonction dossiers partagés: il faut dès l'installation de la machine virtuelle terminée, installer les additions virtualbox, en root. En général on installe d'abord certains compléments au noyau, cette étape peut être facultative:
debianhote:~# apt-get install linux-headers-`uname -r` build-essential
Puis alors, dans la barre, choisir périphériques puis installer les additions client, et lancez sur la machine virtuelle, le script correspondant, après avoir monté l'équivalent d'un lecteur cdrom:
debianhote:~# mount /media cdrom0
debianhote:~# cd cdrom
debianhote:~# sh VBoxLinuxAddition-x86.run
(Il est possible d'utiliser la touche TAB pour choisir le bon script plus rapidement)
La machine virtuelle éteinte, choisissez le ou les dossiers partagés à inclure, ce sont dans ces dossiers que devront se trouver les fichiers à envoyer. Ils seront ensuite accessibles, et à monter en utilisant:
debianhote:~# mount -t vboxsf nomdupartage cheminmontage
Cette étape peut être facultative, il semble que sur certaines versions le montage du dossier partagé se fasse automatique dans /media/sf_nompartage. Pour vérifier, faites un ls.
debianhote:~# ls /media/nompartage
Et vérifiez les permissions sur ce dossier, en revenant sur l'utilisateur local, et non plus en root, puisque nos scripts s’exécuteront via cet utilisateur.
Note: prenez garde dans le cas du partage d'une partition complète, rsync n'aime pas beaucoup les fichiers système cachés crées par windows se trouvant à la racine. Mieux vaut partager un dossier, ou du moins ne lancer rsync que sur un dossier et pas sur une racine de disque.
Désormais, tout se passe sur la machine virtuelle et votre serveur: vos fichiers windows à envoyer sont alors accessibles directement sur la machine virtuelle.
I-3) Autres outils
Installez tant qu'à faire les outils qui nous seront utiles, en root:
debianhote:~# apt-get install ssh rsync
II Configuration de ssh
Cette partie reste inchangée. Placez vous sur le compte utilisateur (non root)
II-1) Génération des clés
Par défaut, il faut créer dans le /home de l'utilisateur le répertoire .ssh. Pour cela:
debianhote:~$ mkdir ~/.ssh
Pour fabriquer la clé:
debianhote:~$ ssh-keygen -t dsa
Nom que l'on souhaite attribuer à la clé: "sdist" Il ne faut pas définir de passphrase, pour que la connexion soit accessible sans mot de passe: taper Entrée.
II-2) Configuration du client ssh
Il faut ajouter le fichier config tel que dans ~/.ssh/config:
Host sdist
HostName debianhote
User utilisateurduserveur
PasswordAuthentication no
IdentityFile ~/.ssh/sdist
Après cette étape, un ssh sdist sur la machine virtuelle doit afficher permission denied. En effet, la clé publique du client n'est pas présente dans la liste du serveur, celui-ci refuse donc la connexion.
II-3) Permissions sur le serveur
Il faut rajouter dans le ~/.ssh/authorized_keys de votre utilisateur sur le serveur, le contenu de ~/.ssh/sdist.pub. Utilisez par exemple scp pour envoyer cette clé en mode mot de passe, et ajoutez là ensuite au fichier précédent (ou remplacez le si il est vide, ce sera plus simple).
debianhote:~$ scp ~/.ssh/sdist.pub user@host:~/sdist.pub
Désormais, le serveur est accesible directement et sans mot de passe, en tapant sur la machine virtuelle
debianhote:~$ ssh sdist
III Scripts de sauvegarde
Selon vos besoins, vous devrez construire vos scripts en utilisant rsync. A titre informatif, voici un exemple. Placez vous ici toujours sur l'utilisateur simple.
debianhote:~$ mkdir ~/scripts
debianhote:~$cd ~/scripts
Un premier script.sh contient le "cadre": Message de lancement (echo), vérification de la connexion, en faisant un ping du serveurLancement des différents scripts rsync, arrêt de la machine:
à venir
Les scrips rsync peuvent être du genre:
rsync /media/sauvegarde --arv --progress -e ssh sdist:/home/server/sauvegarde
A vous d'agrémenter ceci selon vos objectifs.
IV Automatisation sur la machine virtuelle
Trois points ici:
IV-1) Programmation du lancement depuis Windows: Taches planifiées
Un clic droit sur le nom de la machine dans virtualbox permet de créer un raccourci sur le bureau. Il suffit ensuite de l'utiliser dans les taches planifiées pour lancer la sauvegarde. N'oubliez pas, les taches planifiées recquierent a priori que la session windows soit protégée par un mot de passe. Ceci peut en plus s'avérer utile, car la machine virtuelle elle n'est nullement protégée par mot de passe par la suite, et qu'un accès sur le serveur est crée.
IV-2) Création d'un autologin sur la machine virtuelle
Editer avec vim le fichier /etc/inittab, et remplacer la ligne:
1:2345:respawn:/sbin/mingetty tty1
Par:
1:2345:respawn:/sbin/mingetty --autologin utilisateurmachinevirtuelle
Désormais, au démarrage, la machine virtuelle doit conduire non plus à la demande d'identification mais au prompt de l'utilisateur local.
IV-3) Lancement du script au démarrage de la machine virtuelle
Il suffit d'éditer le .profile de l'utilisateur (situé dans son ~/), et d'ajouter votre script de sauvegarde avec un sh /home/utilisateur/script/script.sh Les scripts se lancent donc au démarrage.
IV-4) Arrêter la machine virtuelle en fin de sauvegarde
L'objectif est simple: permettre à l'utilisateur local de pouvoir arrêter la machine debian. En effet, sous Linux, seul root est normalement autorisé à procéder à l’arrêt. La commande sudo va nous permettre de palier à ce problème. On va modifier les paramètres dans le fichier de configuration afin d'autoriser l'arrêt. Pour éditer d'abord:
debianhote:~$ vim /etc/sudoers
Puis ajouter
User_Alias SHUTDOWNERS = utilisateur
SHUTDOWNERS ALL = NOPASSWD: /sbin/shutdown
On obtient l’arrêt via l'utilisateur en utilisant
debianhote:$~sudo shutdown -h now
Conclusion
La procédure est désormais 100% automatique: Les taches planifiées lancent la machine virtuelle, l'autologin se fait, et les scripts de sauvegarde se lancent. Dès qu'ils sont terminés, l'arrêt de la machine peut se faire. Les échanges sont cryptés via ssh/scp utilisé par rsync. Tout commentaire sera le bienvenu, sur le forum, ou via la fonction message du site.