Невозможно использовать демон RSYNC через соединение SSH

У меня проблема при попытке использовать RSYNC с демоном и SSH-соединением.

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

Вот мой файл conf (/etc/rsyncd.conf):

uid = rsync
gid = rsync

[yxz]
    path = /home/pierre/xyz
    read only = false
    auth users = rsync
    hosts allow = <myIP>

/ home / pierre / xyz имеет gid, с которым может связаться пользователь rsync.

Это работает (но не использует демон):

rsync -rzP --stats --ignore-existing --remove-sent-files [email protected]:/home/pierre/xyz/ /media/xyz --include="*.cfg" --exclude="*"

Это не работает (с использованием демона), но rsync запрашивает у меня пароль, а затем говорит «@ERROR: auth failed on module xyz», потому что у меня нет такой настройки аутентификации:

rsync -rzP --stats --ignore-existing --remove-sent-files rsync://[email protected]/xyz/ /media/xyz --include="*.cfg" --exclude="*"

Это не работает (с использованием демона):

rsync -rzP -e "ssh -l rsync" --stats --ignore-existing --remove-sent-files rsync://[email protected]/xyz/ /media/xyz --include="*.cfg" --exclude="*"

Вот сообщение об ошибке:

rsync: соединение неожиданно закрыто (на данный момент получено 0 байт) [Получатель] Ошибка rsync: ошибка в потоке данных протокола rsync (код 12) в io.c (605) [Receiver = 3.0.9]

С параметром -v для команды ssh он говорит, что соединение разрешено, поэтому я полагаю, что проблема в rsync, а не в ssh.

Любая идея?

Спасибо за вашу помощь :)


person pierrefevrier    schedule 29.03.2014    source источник


Ответы (2)


  1. Обязательно остановите и отключите rsync системную службу. Например. если вы используете systemd: systemctl disable --now rsync.

  2. Удалите -l rsync из команды rsync

    rsync -rzP -e "ssh" --stats --ignore-existing --remove-sent-files rsync://mydomain.fr/xyz/ /media/xyz --include="*.cfg" --exclude="*"

  3. Удалить auth users = rsync из rsyncd.conf

  4. Я обнаружил, что если я не использовал root, мне также нужно было добавить use chroot = no в rsyncd.conf.

Отлично работает, но какая аутентификация сделана?

Соединение аутентифицируется как обычно для команды ssh (в частности, так же, как ssh mydomain.fr).

Это не связано с системной службой rsync. Вместо этого он использует SSH для запуска и связи с экземпляром rsync --server --daemon .. Вы можете увидеть запуск этой команды, если замените -e "ssh" на -e "ssh -v".

Проблема с использованием системной службы rsync заключается в том, что она не шифрует сетевое соединение, поэтому сеть может перехватывать и изменять передаваемые данные. Это в некоторой степени лишает смысла использование какой-либо аутентификации.


Часто этот подход используется с выделенным SSH-ключом, используя параметр command="" в authorized_keys, чтобы ограничить его только rsync. Дополнительным преимуществом этого является то, что он переопределяет команду, которую rsync пытается использовать, поэтому вы можете заставить ее использовать --config=~/rsyncd.conf вместо создания глобального /etc/rsyncd.conf. ИМО, это полезно, чтобы избежать путаницы ИМО. Это хорошая практика, потому что если вы создадите глобальный файл конфигурации, есть некоторый риск, что вы случайно запустите небезопасную системную службу. Например, Debian 9 по умолчанию включает системную службу rsync и запускает ее автоматически при загрузке, если вы создали /etc/rsyncd.conf.

person sourcejedi    schedule 04.03.2019

Чтобы использовать демон rsync без пароля, вы должны удалить строку auth users из файла конфигурации.

uid = rsync
gid = rsync

[yxz]
    path = /home/pierre/xyz
    read only = false
    hosts allow = <myIP>

После запуска демона вы можете ссылаться на модуль, используя синтаксис :: или префикс rsync://, как показано ниже.

rsync -rzv [email protected]::xyz/ /media/xyz 

rsync -rzv rsync://[email protected]/xyz/ /media/xyz 

Дополнительная информация: man rsyncd.conf

person clement    schedule 29.03.2014
comment
Отлично работает, но какая аутентификация сделана? Теперь я могу подключиться таким образом (обратите внимание на пользователя toto, которого нет в удаленной системе), что позволяет мне представить, что безопасности нет: rsync -rzP -e ssh -l rsync --stats --ignore-existing - -remove-sent-files rsync: //[email protected]/xyz/ / media / xyz --include = .cfg --exclude = - person pierrefevrier; 29.03.2014
comment
Я. это небезопасно. Если вы хотите пройти аутентификацию, вы должны использовать auth users, который указывает список имен пользователей, разделенных запятыми и разделенными пробелами, которым будет разрешено подключаться к этому модулю, а secrets указывает имя файла, который содержит пары имя пользователя: пароль, используемые для аутентификации этого модуля. модуль. Обратитесь к странице руководства для получения дополнительной информации. - person clement; 29.03.2014
comment
Я знаю это :) Я хочу авторизовать пользователя с помощью ключа, а не пропуска. Спасибо за вашу помощь. - person pierrefevrier; 29.03.2014
comment
тогда вы можете использовать rsync поверх ssh. - person clement; 30.03.2014
comment
Вы правы, если я хочу авторизоваться с помощью ключа, решение состоит в том, чтобы сделать это через SSH, но в этом случае использовать демон rsync невозможно. Это ответ, которого я ждал: невозможно выполнить rsync через SSH и использовать демон. - person pierrefevrier; 30.03.2014