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 при перемещении файлов.

Другие вопросы по тегам