Pour un projet dont un des besoins est de transférer régulièrement des fichiers sur un espace d'hébergement Ovh mutualisé j'ai utilisé rsync et ssh mais je suis tombé sur un problème étonnant lorsque j'ai voulu mettre en place la connexion ssh par clé avec un autre utilisateur que celui par défaut.
Contexte
Utilisateur par défaut
user1
Home distant de user1
/homez.xxx/user1
Utilisateur secondaire
user2
Home distant de user2
/homez.xxx/www/ds_sync
Répertoire source
/ds_sync
Répertoire destination
/www/ds_sync
Commande rsync
rsync -avh -e "ssh -i /home/user2/.ssh/id_rsa" /ds_sync/ /www/ds_sync
Problématique
Après mise en place de la clé public dans le répertoire /homez.xxx/www/ds_sync/.ssh et application des droits qui vont bien sur le serveur Ovh
chmod 705 /homez.xxx/www/ds_sync/.ssh/authorized_keys
La première connexion avec la commande
ssh -i /home/user2/.ssh/id_rsa user2@ftp.clusterXXX.hosting.ovh.net
Tout est ok. Derrière je lance la commande rsync, tout est ok.
Je tente une 2eme connexion en ssh et bizarrement je tombe sur une demande de mot de passe.
Après de nombreuses heures de recherches et d'échange avec le support d'Ovh il apparait que c'est rsync le coupable et plus précisément le -a de rsync qui englobe l'option -p pour --perms qui permet de conserver les droits des fichiers sources vers la destination. Mon répertoire source ds_sync ayant les droit 775 rsync applique la même chose à distance et du coups les droits passent de 705 à 775 sur la destination ce qui pose problème à l'infra d'Ovh.
Pour contourner cette problématique j'ai créé une autre clée pour user1 qui me permet juste de lancer la commande
ssh -i /home/user1/.ssh/id_rsa "chmod 705 ds_sync"