I hav开发者_运维问答e been attempting the following command:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
SSH is running on port 2222, but rsync still tries to use port 22 and then complains about not finding the path, cause of course it does not exist.
I would like to know if it is possible to rsync to a remote host on a non-standard ssh port.
Your command line should look like this:
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path
this works fine - I use it all the time without needing any new firewall rules - just note the SSH command itself is enclosed in quotes.
Another option, in the host you run rsync from, set the port in the ssh config file, ie:
cat ~/.ssh/config
Host host
Port 2222
Then rsync over ssh will talk to port 2222:
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
when you need to send files through a specific SSH port:
rsync -azP -e "ssh -p PORT_NUMBER" source destination
example
rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
use the "rsh option" . e.g.:
rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups
refer to: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
The correct syntax is to tell Rsync to use a custom SSH command (adding -p 2222), which creates a secure tunnel to remote side using SSH, then connects via localhost:873
rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir user@host/path
Rsync runs as a daemon on TCP port 873, which is not secure.
From Rsync man:
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Which misleads people to try this:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
However, that is instructing it to connect to Rsync daemon on port 2222, which is not there.
A bit offtopic but might help someone. If you need to pass password and port I suggest using sshpass
package. Command line command would look like this:
sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/
I found this solution on Mike Hike Hostetler's site that worked perfectly for me.
# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
When calling rsync within java (and perhaps other languages), I found that setting
-e ssh -p 22
resulting in rsync complaining it could not execute the binary:
ssh -p 22
because that path ssh -p 22
did not exist (the -p and 22 are no longer arguments for some reason and now make up part of the path to the binary rsync should call).
To workaround this problem I was able to use this environment variable:
export "RSYNC_RSH=ssh -p 2222"
(Programmatically set within java using env.put("RSYNC_RSH", "ssh -p " + port);
)
My 2cents, in a single system user you can set the port also on /etc/ssh/ssh_config then rsync will use the port set here
Running Linux Ubuntu I use the following command
rsync -rvz --rsh='ssh -p2222' --progress --remove-sent-files ./dir user@host:/path
This passes rsh environmental variable as ssh connection on port 2222. All other methods here seem to not work for my flavor of linux so figured I'd provide others my method.
You can also specify any remote shell you like, either by using the -e command line option, or by setting the RSYNC_RSH environment variable.
Documentation for Rsync: https://download.samba.org/pub/rsync/rsync.1
I was not able to get rsync to connect via ssh on a different port, but I was able to redirect the ssh connection to the computer I wanted via iptables. This is not the solution I was looking for, but it solved my problem.
精彩评论