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

我一直在尝试以下命令:

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

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

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

299646 次浏览

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

你的命令行应该是这样的:

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

这很好-我一直在使用它,不需要任何新的防火墙规则-只是注意SSH命令本身是用引号括起来的。

另一种选择,在你运行rsync的主机上,在ssh配置文件中设置端口,即:

cat ~/.ssh/config
Host host
Port 2222

然后rsync将通过ssh与端口2222通信:

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

我在Mike 远足Hostetler的网站上找到了这个解决方案,它非常适合我。

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

使用“rsh选项”。例如:

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

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

当您需要通过指定的SSH端口发送文件时:

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

例子

rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
有点离题,但可能会帮助到别人。如果你需要传递密码和端口,我建议使用sshpass包。命令行命令看起来像这样: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/ < / p >

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

Rsync -rvz——progress——remove-sent-files -e "ssh -p 2222" ./dir user@host/路径

Rsync作为守护进程运行在TCP端口873上,这是不安全的。

来自Rsync男子:

推送:rsync [OPTION…]SRC…(USER@)主持人:服务台

这误导了人们这样做:

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

然而,这指示它连接到端口2222上的Rsync守护进程,而端口2222并不存在。

当在java(也许还有其他语言)中调用rsync时,我发现了这个设置

-e ssh -p 22

导致rsync抱怨无法执行二进制文件:

ssh -p 22

因为路径ssh -p 22不存在(-p和22由于某些原因不再是参数,现在构成了rsync应该调用的二进制路径的一部分)。

为了解决这个问题,我可以使用这个环境变量:

export "RSYNC_RSH=ssh -p 2222"

(在java中使用env.put("RSYNC_RSH", "ssh -p " + port);以编程方式设置)

我的2美分,在一个系统用户中,你也可以在/etc/ssh/ssh_config上设置端口,然后rsync将使用这里设置的端口