RSYNC en SSH et en CRON

  • Auteur de la discussion Auteur de la discussion sdamain
  • Date de début Date de début
WRInaute passionné
Bonjour à tous,

Dans le cadre de la migration d'un site sur un nouveau serveur dédié (chez Sivit), je souhaite utiliser Rsync pour synchroniser certains folders (contenant des fichiers uploadés par les utilisateurs du site) le temps que la propagation DNS du NDD soit terminée.

Je souhaite donc lancer une commande en CRON afin de synchroniser ces fichiers toutes les x minutes.
Je dois donc lancer la commande suivante depuis le serveur1 :
Code:
rsync -avz /home/web/.../ root@serveur2:/home/web/...

Problème : le mot de passe root du serveur2 m'est demandé.

J'ai d'abord essayé avec "-password-file" mais il semblerait que cette option ne fonctionne qu'avec le deamon de RSYNC.

Après quelques recherches sur Google, j'ai trouvé quelques procédures qui expliquent qu'il faut utiliser des clés pour pouvoir se passer du mot de passe.

J'ai donc fait ceci :
1. Connexion en SSH sur serveur2 + génération des clés pub et priv dans le répertoire /root/.ssh
2. Copie du contenu de la clé publique (id_rsa.pub) dans le fichier /root/.ssh/known_hosts du serveur1

Si je fais un simple teste de connexion
Code:
ssh root@serveur2
depuis serveur1, il me demande toujours d'entrer le mot de passe root de serveur2.

Je pense avoir oublié une étape, je n'ai probablement pas très bien saisi le principe.

Quelqu'un pourrait-il m'aider?

Merci.
 
WRInaute accro
sdamain a dit:
je souhaite utiliser Rsync pour synchroniser certains folders (contenant des fichiers uploadés par les utilisateurs du site)
[...]
Code:
rsync -avz /home/web/.../ root@serveur2:/home/web/...

Problème : le mot de passe root du serveur2 m'est demandé.

Question idiote: tous ces fichiers appartiennent à un seul et même utilisateur (au sens Unix), non? Pourquoi te connecter en root?

Jacques.
 
WRInaute passionné
Oui ces fichiers appartiennent bien à un seul user système.
Je me connecte en Root pour avoir les droits nécessaires.

De toute façon, je pense que même si je me connecte avec un autre user, le problème restera le même, je devrai fournir un mot de passe pour pouvoir me connecter au serveur distant. Non?
 
WRInaute accro
sdamain a dit:
Oui ces fichiers appartiennent bien à un seul user système.
Je me connecte en Root pour avoir les droits nécessaires.

Il serait plus logique de se connecter comme l'utilisateur correspondant.

sdamain a dit:
De toute façon, je pense que même si je me connecte avec un autre user, le problème restera le même, je devrai fournir un mot de passe pour pouvoir me connecter au serveur distant. Non?

Non, pas forcément, pour des raisons de sécurité le compte root est généralement traîté de façon différente, dans certains cas il est en fait impossible de se connecter directement en root (même si tu n'auras pas forcément de message explicite à ce sujet).

Le plus simple est d'utiliser le même user des deux côtés et ssh avec des clefs. Tu génères une paire de clefs (avec ssh-keygen), tu copies la clef publique (.ssh/id_rsa.pub) dans le fichier .ssh/authorized_keys de la machine de destination, et hop.

Jacques.
 
WRInaute passionné
jcaron a dit:
Le plus simple est d'utiliser le même user des deux côtés et ssh avec des clefs. Tu génères une paire de clefs (avec ssh-keygen), tu copies la clef publique (.ssh/id_rsa.pub) dans le fichier .ssh/authorized_keys de la machine de destination, et hop.

Ok, je vais essayer cela.

Juste une question : quel(s) droit(s) dois-je donner à ce user (quel(s) groupe(s))?

Merci.
 
WRInaute accro
sdamain a dit:
Juste une question : quel(s) droit(s) dois-je donner à ce user (quel(s) groupe(s))?

Si tous les fichiers lui appartiennent, il n'a besoin d'être dans aucun groupe particulier... Tu devrais lui donner les mêmes droits que sur la machine initiale...

Jacques.
 
WRInaute passionné
Bon, j'ai eu le même problème que toi au moment de la migration, mais j'ai trouvé une technique assez simple.

Upload de fichier : quand on arrive sur la page d'upload, un .htaccess nous redirige vers un champ A créé pour l'occasion www2.site.tld
==>Désactiver l'upload sur le vieux serveurs...

Download: les fichiers uploadés sont dans www.site.tld/uploads/ (exemple) faire un .htaccess sur les deux serveurs redirigeant là encore vers www2 (où là tu auras sync à la main au bon moment)

Pour rsync, il me semble sinon qu'il faille le lancer en daemon côté nouveau serveur pour ce que tu veux faire...
 
WRInaute passionné
J'ai finalement pu m'en sortir avec cette commande, merci à vous.

J'ai une question supplémentaire.

J'utilise donc cette commande actuellement :
Code:
rsync -avz -e 'ssh' /home/web/original/www/images/ root@serveur:/home/web/destination/ftp/www/images

Le problème est que les fichiers et répertoires de destination se retrouvent avec un chmod n'ayant rien à avoir avec celles qui devraient être en place.

Est-il possible de stipuler (dans le commande rsync) que l'on souhaite conserver les permissions de la destination tout en conservant les options actuelles de la commande (notamment le -a car j'ai des sous répertoire à transéfer).

Merci.
 
Discussions similaires
Haut