Frage Wie führe ich ein sicheres rsync zwischen Servern über ein ungesichertes Netzwerk durch?


Im Grunde ist das, was ich frage, ist jemand über einen Weg gekommen, um rsync in ssh einzuschließen.

Mit OpenSSH v4.9 + sftp gibt es einige nette Optionen, mit denen man die eingehende Verbindung chroot - und das ist eine Lösung, die ich mir ansehen würde, aber ich bleibe bei RHEL, und weder RHEL4 noch RHEL5 sind bis zu dieser Version von ssh.

Meine derzeitige Lösung besteht darin, der Server-Seite mit dem Schlüssel des Client-Benutzers so etwas hinzuzufügen ...

Server% cat ~ / .ssh / authorized_keys
command = "cd / srv / rsync / etl && tar --ausschließen './lost+found' -pcf - ./" ssh-rsa ...

... und so wäre der Kunde dann auf eine Sache und nur eine Sache beschränkt ...

Client% ssh -T -i $ {HOME} /. ssh / id_rsa oracle@database.com> sensative.tar

Dies sichert sowohl die Verbindung als auch den Server (vom Client), ist jedoch ineffizient, da alle Dateien immer wieder abgerufen werden.

Ich mache etwas ähnliches (oder einfach besser) mit rsync.


18
2018-05-25 23:43


Ursprung




Antworten:


Rsync unterstützt die Verwendung von ssh als Transport

rsync -az /path/to/source username@host:/path/to/destination

Bei einigen älteren Versionen von rsync müssen Sie ssh explizit angeben

rsync -aze ssh /path/to/source host:/path/to/destination

Eine Alternative zur Verwendung von rsync ist B. C. Pierces Unisono, die eine ähnliche Funktionalität wie rsync hat, aber an beiden Enden einen lokalen Index führt, um zu vermeiden, dass das Dateisystem zur Berechnung der Deltas durchlaufen werden muss


18
2018-05-26 00:02



Danke, für die schnelle Antwort! Ich hätte erwähnen sollen, dass ich das auch untersucht habe - das Problem (in meinem Fall) ist, dass es den Benutzer nicht einschränkt / chroot. Wenn es möglich wäre, über ssh mit dem rsync-Dienst zu sprechen (d. H. Mit der Doppelpunkt-Syntax des Definierens der Fernbedienung) - das wäre perfekt -, aber das obige funktioniert nur mit einfachem Doppelpunkt - d. H. Über ssh und daher nicht chroot. - Xerxes
Ich habe vergessen zu erwähnen - Unison sieht gut aus, und ich werde einen Link dazu behalten - aber in diesem Fall kann ich nichts außerhalb des von RHN angebotenen installieren - was lahm ist, aber außerhalb meiner Kontrolle. - Xerxes
Eine weitere Einschränkung, die ich erwähnen sollte, ist, dass die Verbindung vom Client initiiert werden muss - die <i> zieht </ i> Seite und nicht den Server. (Server-seitiger Push wäre natürlich einfach, den Server zu sichern, da der Client nichts zu sagen hat, aber nicht auf mein aktuelles Problem anwendbar ist). - Xerxes
rsync -az Server: / Pfad / Pfad / auf / Client? - Dave Cheney
Warum die Chroot? Sie wissen, dass eine Chroot die Sicherheit nicht wirklich verbessert. Wenn Sie bereits ssh bereitstellen, reduziert rsync über ssh nicht die Sicherheit des Systems. Denken Sie auch darüber nach, dass das, was rsync über ssh tut, die rsync-Binärdatei auf dem Server aufruft. Sie können das genauso sichern, wie Sie Ihren Kopierbefehl sichern. - Paul de Vrieze


Okay, ich habe es endlich herausgefunden, aber die Lösung ist nicht so elegant, wie ich es mir erhofft hatte.

Auf der Serverseite müssen Sie Folgendes zur Datei authorized_keys für den entsprechenden Benutzer hinzufügen ...

no-pty, command="exit"

Auf dem Client können Sie dann wie folgt einen Tunnel erstellen ...

ssh -l username -fNTL 8073:server:873

Sobald der Tunnel eingerichtet ist, können Sie rsync wie üblich - mit der Doppelpunkt-Syntax ist nicht möglich - zu localhost.

Die gewählte localhost-Portnummer (8073) ist natürlich völlig optional, aber denken Sie daran, dass Sie rsync haben müssen zu...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

5
2018-05-29 01:25





Vielleicht interessiert dich der daemon-over-ssh-Modus, der Gegenstand dieser Frage ist:

Rsync kann nicht im Daemon-über-SSH-Modus arbeiten


1
2017-08-11 13:59