Rsync über SSH mit Root-Zugriff auf beiden Seiten

14

Ich habe einen älteren Ubuntu-Server und einen neueren Debian-Server und migriere Daten von dem alten auf den neuen. Ich möchte rsync zum Übertragen von Daten verwenden, um die endgültige Migration einfacher und schneller zu gestalten als der entsprechende Prozess tar / scp / untar.

Als Beispiel möchte ich die Basisordner einzeln mit dem neuen Server synchronisieren. Dies erfordert Root-Zugriff auf beiden Seiten, da nicht alle Dateien auf der Quellenseite weltweit lesbar sind und das Ziel mit den richtigen Berechtigungen in / home geschrieben werden muss. Ich kann nicht herausfinden, wie ich rsync root auf beiden Seiten Zugriff gewähren kann.

Ich habe ein paar verwandte Fragen gesehen, aber keine passt genau zu dem, was ich versuche.

Ich habe Sudo eingerichtet und arbeiten auf beiden Servern.

Tim Abell
quelle

Antworten:

14

Eigentlich müssen Sie KEINE Root-Authentifizierung über SSH zulassen, um rsync auszuführen, wie Antoine vorschlägt. Die Transport- und Systemauthentifizierung kann vollständig über Benutzerkonten erfolgen, solange Sie auf beiden Seiten rsync mit sudo ausführen können, um die Dateien zu lesen und zu schreiben.

Als Benutzer auf Ihrem Zielserver können Sie die Daten folgendermaßen von Ihrem Quellserver saugen:

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

Der Benutzer, den Sie auf beiden Servern ausführen, benötigt einen passwortlosen * sudo-Zugriff auf die rsync-Binärdatei, Sie müssen jedoch nirgendwo die ssh-Anmeldung als root aktivieren. Wenn der von Ihnen verwendete Benutzer am anderen Ende nicht übereinstimmt, können Sie user @ boron hinzufügen, um einen anderen Remote-Benutzer anzugeben.

Viel Glück.

* oder Sie müssen das Passwort manuell im Timeout-Fenster eingegeben haben.

Caleb
quelle
5
Obwohl dies eine alte Frage ist, möchte ich dieser akzeptierten Antwort ein Wort der VORSICHT hinzufügen . Nach meinem Verständnis ist das Zulassen von "sudo rsync" ohne Passwort gleichbedeutend mit dem Öffnen des Root-Kontos für die Remote-Anmeldung. Dies liegt daran, dass es sehr einfach ist, vollständigen Root-Zugriff zu erhalten, z. B. weil alle Systemdateien ohne Kennwort heruntergeladen, geändert und ersetzt werden können.
Ascurion
3

Wenn Ihre Daten nicht sehr sensibel sind, können Sie tarund verwenden socat. Nach meiner Erfahrung ist dies oft schneller als rsyncüber ssh.

Sie brauchen socatoder netcatauf beiden Seiten.

Wechseln Sie auf dem Zielhost in das Verzeichnis, in das Sie Ihre Daten speichern möchten. Führen Sie anschließend Folgendes aus:
socat TCP-LISTEN:4444 - | tar xzf -

Wenn der Zielhost lauscht, starten Sie ihn auf der Quelle wie folgt:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Für dieses Setup benötigen Sie eine zuverlässige Verbindung zwischen den beiden Servern.

zagyi
quelle
Guter Punkt. In einer vertrauenswürdigen Umgebung werden Sie viel Geschwindigkeit gewinnen, indem Sie nicht verschlüsseln. Bei kleinen Dateien spielt es möglicherweise keine Rolle, bei großen Datenmengen jedoch.
Pboin
2

Ok, ich habe alle Hinweise zusammengetragen, um etwas zu finden, das für mich funktioniert.

Nennen wir die Server "src" und "dst".

Richten Sie ein Schlüsselpaar für root auf dem Zielserver ein und kopieren Sie den öffentlichen Schlüssel auf den Quellserver:

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

Fügen Sie den öffentlichen Schlüssel den autorisierten Schlüsseln von root auf dem Quellserver hinzu

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

Ziehen Sie die Daten mit rsync zurück auf den Zielserver:

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