it seems I have to use rsync modules. So I created a very simple rsyncd.conf in the home of user2 on the remote server with:
[test] path = /dest
It does not work, but the problem seems another one. When I run
rsync -e "ssh -v -l user1" --delete-after -aX /src/* user2@remote_host::test
ssh connection is enstablished by user1 this time, but I get this error:
[...] Bytes per second: sent 9093.3, received 12740.9 debug1: Exit status 1 rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
rsync path on both servers is
/usr/bin/rsync. What's the problem?
Scenario: I need to rsync to a remote server. I can login to the remote server using user1 (my personal user), but for doing anything else I have to change to user2 (the technical user). I can't ssh directly with user2 since I don't have its password, and there's too little free space on user1 home. I don't have free opened ports and the only sudo command I can launch with user1 is
sudo su - user2. Furthermore, the source machine is identical to the remote one.
Question: Is there a way to rsync to a remote machine using user1 as the user that opens the ssh connection, and user2 as the user that runs the remote rsync?
rsync -e "ssh -l user1" --delete-after -aX /src/* user2@remote_host:/dest
but it tries to use user2 as ssh user anyway.
rsync -e "ssh -l user2" --delete-after -aX /src/* user1@remote_host:/dest
remote rsync uses user1 and it can't write on user2 dirs.
USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION It is sometimes useful to use various features of an rsync daemon (such as named modules) without actually allowing any new socket connections into a system [...] Rsync supports connecting to a host using a remote shell and then spawning a single-use “daemon” server that expects to read its config file in the home dir of the remote user. [...] since the daemon is started up fresh by the remote user, you may not be able to use features such as chroot or change the uid used by the daemon. [...] If you need to specify a different remote-shell user, keep in mind that the user@ prefix in front of the host is specifying the rsync-user value (for a module that requires user-based authentication). This means that you must give the ’-l user’ option to ssh when specifying the remote-shell, as in this example that uses the short version of the --rsh option: rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest The “ssh-user” will be used at the ssh level; the “rsync-user” will be used to log-in to the “module”.
I feel like I'm not understanding something "under the hood".