rsync protocol version mismatch -- is your shell clean
by Lucio Chiappetti from LinuxQuestions.org on (#5RD84)
I'd like to set up periodical reciprocal synch for a small number of files under a service account between my machine A at home (xubuntu 20.04 rsync 3.1.3 protocol version 31) and my machine B at work (opensuse leap 42 rsync 3.1.0 protocol version 31). By reciprocal I mean that the most recent file shall be transferred A to B or B to A.
I do not want to setup a rsync daemon (which I did long ago Europe to Chile), and cannot use an NFS mount now (machine A has a dynamic IP) like I did when machine A was at work on the work LAN.
So I discovered in the man page the possibility to tunnel rsync via ssh.
I was actually pleasantly surprised when I tried this ls-like command logged as myself on A
rsync B:/path
this prompts for my account password on B, and lists the files. I was surprised because ssh myself@B is protected by a knock daemon, but I noticed in /var/log/messages on B rsync seems to be working on a dedicated port.
rsync B:/path .
correctly fails with a write error on ~service
So I tried both an ls-like and a local copy (so far still logged in as myself,
I expect the second to fail with a write permission ... service@A has still an empty home, I'd like just to import stuff from B before logging in as service)
rsync service@B:/path
rsync service@B:/path .
I provide the service password (which should be used in clear since it is unimportant with sshpass or some other tricks suggested on the net) but I get for both commands
protocol version mismatch -- is your shell clean?
Now the version of rsync is slightly different but protocol is 31 for both, so it is not clear to me how to proceed. I am also confused by the difference between rsync user service@B and ssh user -e "ssh -l service"
(currently on B the service account is invoked as su - service, and its .cshrc spawns an utility program; on A I'd like when all is setup to invoke it in the same way, but it should (1) rsync files frm B to A; (2) run the utility on A ; (3) rsync files from A to B ... on both machine the utility is interactive, namely it interacts with the terminal)
I do not want to setup a rsync daemon (which I did long ago Europe to Chile), and cannot use an NFS mount now (machine A has a dynamic IP) like I did when machine A was at work on the work LAN.
So I discovered in the man page the possibility to tunnel rsync via ssh.
I was actually pleasantly surprised when I tried this ls-like command logged as myself on A
rsync B:/path
this prompts for my account password on B, and lists the files. I was surprised because ssh myself@B is protected by a knock daemon, but I noticed in /var/log/messages on B rsync seems to be working on a dedicated port.
rsync B:/path .
correctly fails with a write error on ~service
So I tried both an ls-like and a local copy (so far still logged in as myself,
I expect the second to fail with a write permission ... service@A has still an empty home, I'd like just to import stuff from B before logging in as service)
rsync service@B:/path
rsync service@B:/path .
I provide the service password (which should be used in clear since it is unimportant with sshpass or some other tricks suggested on the net) but I get for both commands
protocol version mismatch -- is your shell clean?
Now the version of rsync is slightly different but protocol is 31 for both, so it is not clear to me how to proceed. I am also confused by the difference between rsync user service@B and ssh user -e "ssh -l service"
(currently on B the service account is invoked as su - service, and its .cshrc spawns an utility program; on A I'd like when all is setup to invoke it in the same way, but it should (1) rsync files frm B to A; (2) run the utility on A ; (3) rsync files from A to B ... on both machine the utility is interactive, namely it interacts with the terminal)