Не може да се използва 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) [Получател=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. IMO това е полезно за избягване на объркване IMO. Това е добра практика, защото ако създадете глобалния конфигурационен файл, има известен риск случайно да стартирате несигурната системна услуга. Например 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