lsyncd не уважает пользователя ssh при удалении файлов
Мы настроили lsyncd для синхронизации данных между двумя хостами. Соединение ssh настроено на использование пользователя tomcat с соответствующим файлом идентификации id_rsa. По некоторым причинам добавление / создание на удаленном работает нормально, но удаление не работает. Когда rsync пытается удалить файл, для подключения к целевому хосту используется пользователь root, а не пользователь tomcat (который используется для создания / добавления).
В журналах (/var/log/lsyncd/lsyncd.log) мы видим:
Wed Feb 15 13:48:24 2017 Normal: Rsyncing list
/test.txt
Wed Feb 15 13:48:26 2017 Normal: Finished (list): 0
Wed Feb 15 13:48:34 2017 Normal: Deleting list
/myfolder//test.txt
Received disconnect from 10.29.146.78: 2: Too many authentication failures for root
Wed Feb 15 13:48:41 2017 Normal: Retrying (list): 255
Мы используем следующую конфигурацию (/etc/lsyncd.conf):
settings{
pidfile = "/var/run/lsyncd.pid",
statusFile = "/var/tmp/lsyncd.status",
logfile = "/var/log/lsyncd/lsyncd.log",
statusInterval = 60,
logfacility = "user",
logident = "lsyncd",
inotifyMode = "CloseWrite",
maxProcesses = 10,
}
sync {
default.rsyncssh,
source = "/myfolder/",
delete = true,
host = "remote-host",
targetdir = "/myfolder/",
excludeFrom = "/etc/lsyncd/lsyncd.exclude",
delay = 5,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
owner = true,
compress = true,
_extra = { "--bwlimit=50000", "--delete-after" },
rsh = "/usr/bin/ssh -l tomcat -i /usr/share/tomcat6/.ssh/id_rsa",
}
}
В качестве обходного пути мы можем использовать файл /root/.ssh/config с:
Host remote-host
Hostname remote-host
User tomcat
IdentityFile /usr/share/tomcat6/.ssh/id_rsa
Конечно, мы бы предпочли не использовать это, поскольку оно должно работать с конфигурацией lsyncd.conf.
Мы используем lsyncd версии 2.1.4
2 ответа
Следующая проблема на GitHub помогла мне решить ту же проблему: https://github.com/axkibe/lsyncd/issues/369
То, что я сделал, было довольно просто, я просто заменил default.rsyncssh
с default.rsync
в lysync.conf.lua
файл
При использовании rsyncssh нужно быть осторожным.
Параметр конфигурации "ssh {}" имеет свой собственный "двоичный", "порт", "_extra". Смотрите документацию для полного списка настроек.
Это немного сбивает с толку, потому что "rsync {}" также необходимо настроить. Да, оба раздела должны быть сделаны.
Раздел "ssh" используется для удаления и перемещения событий. Раздел "rsync" используется для передачи файлов.
Можно избежать путаницы, используя rsync вместо rsyncssh. Но вы потеряете эффективность пропускной способности, которую обеспечивает rsyncssh при перемещении файлов.