Як виконати захищену rsync між серверами через незахищену мережу


19

В основному те, що я запитую, чи хтось натрапив на засіб, за допомогою якого загортати rsync всередині ssh.

З OpenSSH v4.9 + sftp є кілька приємних варіантів, які дозволяють хронізувати вхідне з'єднання і таке інше - і це рішення, на яке я б звернувся, але я застряг з RHEL, і ні RHEL4, ні RHEL5 не підтримують цю версію ssh.

Моє поточне рішення - додати щось подібне на сторону сервера, використовуючи ключ користувача клієнта ...

сервер% cat ~ / .ssh / Author_keys
command = "cd / srv / rsync / etl && tar --exclude" ./lost+found '-pcf - ./ "ssh-rsa ...

... і тоді клієнт може бути обмежений лише однією справою і лише одне ...

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

Це забезпечує з'єднання, як і сервер (від клієнта), однак неефективно, оскільки всі файли будуть завантажуватися знову і знову.

Я після того, як роблю щось подібне (або просто краще), використовуючи rsync.

Відповіді:


18

Rsync підтримує використання ssh як транспорту

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

деякі старіші версії rsync вимагають чітко вказати ssh

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

Альтернативою використанню rsync є BC Pierce's Unison , який має аналогічні функції, ніж rsync, але зберігає локальний індекс на обох кінцях, щоб уникнути необхідності ходити по файловій системі для обчислення дельти


Дякую за швидку відповідь! Я мав би зазначити, що я це досліджував - проблема (в моєму випадку) з цим полягає в тому, що це не обмежує / хронує користувача. Якби можна було поспілкуватися зі службою rsync через ssh (тобто, використовуючи синтаксис подвійного двокрапкового коду визначення пульта) - це було б ідеально, - але вищезазначене працює лише з двокрапкою - тобто через ssh, а отже, і без хротування.
Xerxes

Я забув згадати - Юнісон виглядає приємно, і я продовжую посилатися на це - проте в цьому випадку - я не можу встановити нічого поза тим, що пропонується RHN, - це кульгаво, але поза моїм контролем.
Xerxes

Ще одне обмеження, яке я мушу зазначити, полягає в тому, що підключення потрібно ініціювати від клієнта - <i> тягне </i> сторона, а не сервер. (Натискання на стороні сервера, природно, легко захистити сервер, оскільки клієнт не може сказати, але не стосується моєї поточної проблеми).
Ксеркс

1
rsync -az сервер: / path / path / on / client?
Дейв Чейні

1
Чому chroot? Ви знаєте, що chroot не дуже покращує безпеку. Крім того, якщо ви вже виходите із надання ssh, тоді rsync за ssh не знижує безпеку системи. Також подумайте про те, що те, що робить rsync над ssh, - це викликати бінарний файл rsync на сервері. Ви можете забезпечити так само, як захистити свою команду копіювання.
Пол де Вріезе

5

Гаразд я нарешті це зрозумів, але рішення не таке витончене, як я сподівався.

З одного боку сервера, вам потрібно додати наступне до файлу санкціонованих ключів для відповідного користувача ...

no-pty, command="exit"

На клієнті ви можете створити тунель наступним чином ...

ssh -l username -fNTL 8073:server:873

Після того, як тунель встановлений, ви можете перейти в режим синхронізації, як зазвичай - використання синтаксису з подвійною двокрапкою неможливо - до localhost.

Вибраний вами номер порту localhost (8073) абсолютно необов’язковий, просто пам’ятайте, що це потрібно rsync для ...

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.