使用rsync时是否可以指定不同的ssh端口?

Is it possible to specify a different ssh port when using rsync?

我一直在尝试以下命令:

1
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path

ssh在端口2222上运行,但是rsync仍然尝试使用端口22,然后抱怨找不到路径,因为它当然不存在。

我想知道是否可以在非标准的ssh端口上rsync到远程主机。


您的命令行应该如下所示:

1
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path

这很好——我一直在使用它,不需要任何新的防火墙规则——只需注意ssh命令本身包含在引号中。


另一个选项是,在运行rsync的主机中,在ssh配置文件中设置端口,即:

1
2
3
cat ~/.ssh/config
Host host
    Port 2222

然后,ssh上的rsync将与端口2222通信:

1
rsync -rvz --progress --remove-sent-files ./dir user@host:/path


当需要通过特定的ssh端口发送文件时:

1
rsync -azP -e"ssh -p PORT_NUMBER" source destination

例子

1
rsync -azP -e"ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination


使用"RSH选项"。例如。:

1
rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups

请参阅:http://www.linux questions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/


有点离题,但可能对某人有所帮助。如果您需要传递密码和端口,我建议使用sshpass包。命令行命令如下:sshpass -p"password" rsync -avzh -e 'ssh -p PORT312' [email protected]:/dir_on_host/


我在Mike Hike Hosteller的网站上找到了这个解决方案,它对我非常有用。

1
# rsync -avz -e"ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/


正确的语法是告诉rsync使用自定义ssh命令(添加-p 2222),该命令使用ssh创建到远程端的安全隧道,然后通过localhost:873进行连接。

rsync -rvz --progress --remove-sent-files -e"ssh -p 2222" ./dir user@host/path

rsync在不安全的TCP端口873上作为守护进程运行。

来自RSYC人:

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

这会误导人们尝试:

rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path

但是,这指示它连接到端口2222上的rsync守护进程,而端口2222不在那里。


我无法让rsync通过另一个端口上的ssh连接,但我能够通过iptables将ssh连接重定向到我想要的计算机。这不是我想要的解决方案,但它解决了我的问题。