Назад | Перейти на главную страницу

Не удается заставить rsync работать в режиме daemon-over-ssh

Я пытаюсь настроить rsync для ежедневного копирования данных с сервера. Чтобы максимально ограничить систему, я пытаюсь использовать режим, описанный на странице руководства как: «ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ 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 / authorized_keys

Кажется, есть ошибка в документации или внедрении rsync. человек 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.

rsync в режиме демона - это не то, что я бы посоветовал, если вы хотите максимально надежно заблокировать его. Вы хотите ограничить команду, запускаемую ключом SSH, и вызывать команду копирования, используя этот ключ.

Чтобы узнать, какой командой следует ограничить ключ, запустите соответствующую командную строку rsync с небольшими изменениями в команде ssh:

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

Вы увидите строку в выводе отладки, например:

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

Именно этой командой вы хотите ограничить возможность запуска ключа в .ssh / authorized_keys:

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