Неможливо змусити rsync працювати в режимі демон-над-ssh


11

Я намагаюся налаштувати rsync для копіювання даних із сервера щодня. Для того, щоб зробити систему максимально обмеженою, я намагаюся використовувати режим, описаний на сторінці man, як: "ВИКОРИСТАННЯ RSYNC-DAEMON ОСОБЛИВОСТІ ВІД ВІДКЛЮЧЕННЯ"

Тому я помістив файл, який називається rsyncd.conf, у домашню папку root:

[root]
path = /
read only = true

і спробував скопіювати / etc / passwd як тест:

rsync -vv -e ssh myserver::root/etc/passwd .

Але я отримую наступне:

opening connection using: ssh myserver rsync --server --daemon . 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]

Причина, чому я все це роблю, полягає в тому, що як тільки я працюю, я планую обмежити доступ, вказавши команду

rsync --server --daemon .

в ~ / .ssh / санкціонованих_ ключах


Що входить / var / log / secure або / var / log / повідомлення на приймальному сервері?
Дейв Чейні

Це було: rsync: не вдалося відкрити файл конфігурації "/etc/rsyncd.conf": Немає такого файлу чи каталогу (2) Дякую, це призвело до рішення, яке я опублікую як відповідь.
rjmunro

Відповіді:


11

Здається, в документації помилка або поширення rsync. man rsync каже:

Rsync підтримує підключення до хоста за допомогою віддаленої оболонки, а потім нерестує одноразовий сервер “демон”, який очікує на зчитування конфігураційного файлу в домашньому режимі віддаленого користувача.

але під час підключення до root, відповідно до / var / log / messages, він шукав /etc/rsyncd.conf для конфігураційного файлу (стандартне місце для файлу rsyncd.conf, коли він не використовується через SSH.

Мені довелося змусити ssh-сервер використовувати правильний файл конфігурації, додавши

command="rsync --config=/root/rsyncd.conf --server --daemon ."

до /root/.ssh/authorized_keys.

Причиною того, що я не просто поставив конфігурацію в розташування за замовчуванням, є те, що я не хотів, щоб хтось випадково запустив звичайний демон rsync - я хочу лише, щоб демон мав такий доступ, коли він отримав правильний ключ ssh.


5

rsync в демонському режимі - це не те, що я б запропонував, якщо ви хочете зафіксувати її якомога щільніше. Ви хочете обмежити команду, щоб дозволити запуск ключа SSH та викликати команду копіювання за допомогою цього ключа.

Щоб дізнатися, до якої команди обмежити ключ, запустіть відповідний командний рядок rsync з невеликою модифікацією команди ssh:

rsync -avz -e 'ssh -v' stuff somewhere:/place

Ви побачите рядок у виводі налагодження, такий як:

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

Саме такою командою є те, що ви хочете обмежити ключ, щоб мати змогу запускати .ssh / санкціоновані_кеї:

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=

3
Я хочу мати змогу робити різні резервні копії частин системи - наприклад, резервні копії електронної пошти та бази даних SQL кожен день, але інші речі раз на тиждень. Мені знадобиться конкретна команда та специфічний ключ для кожної можливої ​​резервної копії, і я не зможу робити додаткові спеціальні резервні копії з тією ж інфраструктурою.
rjmunro

2
Досить справедливо - я вважаю, "щоб зробити систему максимально обмеженою" досить буквально :)
MikeyB

1
Ви можете помістити декілька команд у сценарій та передати параметри сценарію як введення першого рядка.
alecco

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