Question Rsync sur SSH avec accès root des deux côtés


J'ai un ancien serveur Ubuntu et un serveur Debian plus récent et je migre les données de l'ancien vers le nouveau. Je souhaite utiliser rsync pour transférer des données afin de rendre la migration finale plus facile et plus rapide que le processus équivalent tar / scp / untar.

Par exemple, je souhaite synchroniser les dossiers d’accueil un par un sur le nouveau serveur. Cela nécessite un accès root aux deux extrémités, car tous les fichiers du côté source ne sont pas lisibles par tout le monde et la destination doit être écrite avec les autorisations appropriées dans / home. Je n'arrive pas à comprendre comment donner un accès root à rsync des deux côtés.

J'ai vu quelques questions connexes, mais aucune ne correspond vraiment à ce que j'essaie de faire.

J'ai sudo mis en place et travaille sur les deux serveurs.


14
2018-04-28 09:18


origine




Réponses:


Réellement vous n'avez PAS besoin d'autoriser root à l'authentification via SSH pour exécuter rsync comme le suggère Antoine. L'authentification du transport et du système peut s'effectuer entièrement sur les comptes d'utilisateur, à condition que vous puissiez exécuter rsync avec sudo des deux côtés pour lire et écrire les fichiers.

En tant qu'utilisateur sur votre serveur de destination, vous pouvez aspirer les données de votre serveur source comme ceci:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

L'utilisateur que vous exécutez sur les deux serveurs aura besoin d'un accès * sudo sans mot de passe au fichier binaire rsync, mais vous n'avez PAS besoin d'activer la connexion SSH en tant qu'utilisateur root. Si l'utilisateur que vous utilisez ne correspond pas à l'autre extrémité, vous pouvez ajouter user @ boron: pour spécifier un autre utilisateur distant.

Bonne chance.

* ou vous devrez avoir saisi le mot de passe manuellement dans la fenêtre de délai d'attente.


13
2018-04-28 22:06



Bien que ce soit une vieille question, je voudrais ajouter un mot de MISE EN GARDE à cette réponse acceptée. De ma compréhension, autoriser "sudo rsync" sans mot de passe équivaut à ouvrir le compte root pour la connexion à distance. En effet, il est très facile d’obtenir un accès complet à la racine, par exemple. parce que tous les fichiers système peuvent être téléchargés, modifiés et remplacés sans mot de passe. - Ascurion


Si vos données ne sont pas très sensibles, vous pouvez utiliser tar et socat. D'après mon expérience, c'est souvent plus rapide que rsync sur ssh.

Vous avez besoin socat ou netcat sur les deux côtés.

Sur l'hôte cible, accédez au répertoire dans lequel vous souhaitez placer vos données, après cette exécution:
socat TCP-LISTEN:4444 - | tar xzf -

Si l'hôte cible est à l'écoute, démarrez-le sur la source comme suit:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Pour cette configuration, vous aurez besoin d’une connexion fiable entre les 2 serveurs.


3
2018-04-28 21:20



Bon point. Dans un environnement sécurisé, vous accélérerez considérablement en ne cryptant pas. Ce n'est peut-être pas important pour les petits fichiers, mais avec des Go de données, ce sera le cas. - pboin


Ok, j'ai rassemblé tous les indices pour obtenir quelque chose qui fonctionne pour moi.

Permet d'appeler les serveurs "src" & "dst".

Configurez une paire de clés pour root sur le serveur de destination et copiez la clé publique sur le serveur source:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Ajouter la clé publique aux clés autorisées de la racine sur le serveur source

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

De retour sur le serveur de destination, extrayez les données avec rsync:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/

2
2018-04-28 09:30