howto enable ssh on connect to rsync daemon

Hardy Merrill hmerrill at
Fri Oct 10 00:13:31 EST 2003

Wilma, the manpage section titled


says this

       It  is sometimes useful to be able to set up file transfers using rsync
       server capabilities on the remote machine, while still using rsh or ssh
       for transport.  This is especially useful when you want to connect to a
       remote machine via ssh (for encryption or to get through  a  firewall),
       but  you  still  want  to have access to the rsync server features (see

       From the user's perspective, using rsync in this way  is  the  same  as
       using it to connect to an rsync server, except that you must explicitly
       set the remote shell program on the command  line  with  --rsh=COMMAND.
       (Setting RSYNC_RSH in the environment will not turn on this functional-

       In order to distinguish between the remote-shell  user  and  the  rsync
       server user, you can use '-l user' on your remote-shell command:

              rsync -av --rsh="ssh -l ssh-user" rsync-user at host::module[/path]

       The "ssh-user" will be used at the ssh level; the "rsync-user" will  be
       used to check against the rsyncd.conf on the remote host.

After reading that and looking at your command in the script
   rsync -av --delete node2::resource /path/to/localresource > $LOG 2>&1

I don't think you can just set environment variable USER and
have that work right.  Try specifying the command as the manpage
suggests, with the --rsh="ssh -l ssh_user" rsync-user at host::module

Hardy Merrill
Red Hat, Inc.

 wilma  [wilma2002 at] wrote:
> Hi,
> I'm trying to setup automatic sync of files over SSH from node2 to node1.
> node2 is the "server" and node1 is the "client".
> I have setup rsync like this on the nodes which runs AIX (4.3.3 and 5.1):
> 1. Installed rsync from Linux Toolbox (rsync-2.5.4-1.aix4.3.ppc.rpm) on both nodes.
> 2. Added following to both nodes /etc/services file:
>      rsync           873/tcp
> 3. Added following to node2 /etc/inetd.conf and refreshed inetd
>      rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
> 4. Created /etc/rsyncd.conf on node2 with this content:
>      log file = /var/log/rsyncd.log
>      [resource]
>              path = /path/to/resource
>              comment = resource file area
>              read only = yes
>              auth users = user
>              hosts allow = node1
>              secrets file = /etc/rsyncd.secrets
> 5. Created /etc/rsyncd.secrets at mode 600 on node2 with this content:
> user:password
> 6. Created a script on node1 to be used from cron with this content:
>      #!/bin/ksh
>      #
>      LOG=/var/log/rsync.log
>      export USER=user
>      export RSYNC_RSH=ssh
>      export RSYNC_PASSWORD=password
>      echo $(date) >> $LOG
>      echo "" >> $LOG
>      rsync -av --delete node2::resource /path/to/localresource > $LOG 2>&1
>      echo "**********************************************" >> $LOG
> --------------------------------------------------------------------------------------------------------
> The script runs fine, but I can see in an iptrace it does'nt use SSH. Instead it connects to port 873 on
> node2.
> I have tried adding the flag --rsh "ssh" to the command but it tells me this:
> "WARNING: --rsh or -e option ignored when connecting to rsync daemon"
> Can someone please help how to set this up to go over SSH and without the need to supply a password?
> Thanks in advance
> -wilma-
> ____________________________________________________________
>   Singelkryssen lättar ankar igen! Ta med kompisarna!

More information about the rsync mailing list