Я пытаюсь настроить 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=