pourait être : HowTo francophone rsync via ssh
En ce (beau) jour d'avril 2003, j'avais décidé d'utiliser 'rsync' entre 2 PC linux connecté via internet
- Je souhaitais 'impérativement' crypter les échanges entre ces 2 machines (via un 'tunnel ssh')
- cela devait se réaliser via cron : il fallait donc trouver un moyen de ne pas devoir saisir de mot de passe malgré l'utilisation de ssh
Après quelques demandent / Recherche (voir en bas de pages, les remerciements), j'en ais déduis la procédure ci-dessous que je vous livre
Tout d'abord, voici mes petites conventions d'écriture:
- ceci est la mise en forme des Commandes à taper
- ceci est la mise en forme des questions du shell
-
| Désignation |
Machine Locale |
Machine Distante |
Nom Interne (uname -n) |
toto.bordeaux |
titi.lille |
| Nom Internet |
toto.no-ip-com |
titi.no-ip.com |
Voici comment je procède
- Création des clefs d'authentifications
- Une Privé qui restera sur toto.bordeaux
- Une Public qui ira sur titi.lille
- Copie de la clefs privée pour notre login local ~/.ssh/
- Copie de la clef public sur la machine distante titi.lille dans ~/.ssh/
- vérifier que la connexion ssh se fait sans saisie de pass(word/phrase)
- utiliser un petit script pour sauvegarder mes modif de mon répertoire local vers la machine distante
C'est ici que les choses sérieuses se passent
donc, allons-y , dans un terminal (j'ai fait mon exemple en tant que 'root':
#ssh-keygen -t rsa -N -f ~/.ssh/Remote_authorized_keys
Enter passphrase (empty for no passphrase):
Tapez 'ENTREE'
Enter same passphrase again:
Tapez à nouveau sur 'ENTREE'
éditer le ~/.ssh/Remote_authorized_keys.pub et modifiez a la fin de la ligne
root@toto.bordeaux [normalement toto.bordeaux] par :
root@toto.no-ip-com
#scp Remote_authorized_keys.pub root@titi.no-ip.com:/root/.ssh/authorized_keys
root@titi.no-ip.com's password:
Tapez (une derniè fois :-) ) le mot de passe du root de titi.no-ip.com
Normalement le fichier est bien copié sur la machine distante
#cp Remote_authorized_keys ~/.ssh/id_rsa
Si tous c'est bien passé, à partir de maintenant la prochaine connexion vers root@titi.no-ip.com ne devrait pas demander de mot de passe, vérifions :
#ssh root@titi.no-ip.com
voili, voila ! j'ai le shell de la machione distante
- Sans saisir de mot de passe
- Sans saisie de 'pass phrase'
Maintenant voici le script que je me suis fait pour automatiser la synchronisation entre mes 2 machines
#!/bin/sh
# Nom du script : MySync
# Ne pas oublier de faire chmod 700 MySync pour pouvoir l'executer
#
# fonction : Envoi et reception de fichier entre 2 pc distant via internet
#
SrcFile=/home/greg/public_html/siteweb001/lesite/
DstFile=/home/virtualServer/siteweb001/html/
DstVisuel=/home/virtualServer/siteweb001/log/
LclVisuel=/home/greg/public_html/siteweb001/log
TheRsync=/usr/bin/rsync
RemoteHost=root@titi.no-ip.com
excludeLocalToRemote='--exclude upload --exclude "*.journal"'
#put local to titi
$TheRsync --stats -e ssh -avzp $excludeLocalToRemote --delete $SrcFile $RemoteHost:$DstFile
#get from titi to local
$TheRsync --stats -e ssh -avzp --delete $RemoteHost:$DstVisuel $LclVisuel
##################################################################
Un petit coups de
#./MySync
et après un petit moment (~ 15 secondes la 1er fois chez moi!) devrait apparaitre les fichiers échangés
#./MySync
Ne devrait plus rien transmettre, puisque vous n'avez peut être pas ajouté/modifé de fichiers dans /home/greg/public_html/siteweb001/lesite/
Note : NonTesté
--------
sur machine distante : copier /root/.ssh/authorized_keys ~[user]/.ssh/. ?
Voila, ceci était ma modeste contribution, en espérant qu'un jour elle servira ç quelqu'un (et que ce quelqu'un sera capable de me relire ;-) )
#echo Remerciements
- 04/05/2005 : il semble qu'une commande supplémentaire existe : ssh-copy-id -i ~/.ssh/id_rsa.pub utilisateur@machine, merci à Sylvain chez rtcw.c.f pour cette info que je tenterais d'ajouter plus proprement dans cette page
#
Bulot Gregory 2003