JohanKees
JohanKees

Reputation: 709

lsyncd doesn't respect ssh user when deleting files

We have setup lsyncd to sync data between two hosts. The ssh connection is configured to use user tomcat with the matching id_rsa identity file. For some reason a append/create on the remote works fine, but deleting doesn't work. When rsync tries to delete a file, the root user is used to connect to the destination host and not the tomcat user (which is used for create/append).

In the logs (/var/log/lsyncd/lsyncd.log) we see:

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

We use the below configuration (/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",
  }
}

As a workaround we can use a /root/.ssh/config file with:

Host remote-host
    Hostname remote-host
    User tomcat
    IdentityFile /usr/share/tomcat6/.ssh/id_rsa

Of course we would rather not have to use this since it should work with the lsyncd.conf configuration.

We're using lsyncd version 2.1.4

Upvotes: 2

Views: 2315

Answers (2)

Timothy Prime
Timothy Prime

Reputation: 136

When using rsyncssh, one has to be careful.

The "ssh {}" configuration parameter has its own "binary", "port", "_extra". See documentation for complete list of settings.

It is a little confusing because "rsync {}" also needs to be configured. Yes, both sections need to be done.

The "ssh" section is used for delete and move events. The "rsync" section is used for file transfer.

One might avoid the confusion by using rsync instead of rsyncssh. But, you would lose the bandwidth efficiency that rsyncssh provides when files get moved.

Upvotes: 0

Point Networks
Point Networks

Reputation: 1101

The following issue on GitHub helped to me solve the same problem: https://github.com/axkibe/lsyncd/issues/369

What I did was quite simple, I just replaced default.rsyncssh with default.rsync in lysync.conf.lua file

Upvotes: 1

Related Questions