我一直在尝试以下命令:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
SSH在端口2222上运行,但是rsync仍然尝试使用端口22,然后抱怨找不到路径,因为它当然不存在。
我想知道是否有可能在非标准的ssh端口上rsync到远程主机。
我一直在尝试以下命令:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
SSH在端口2222上运行,但是rsync仍然尝试使用端口22,然后抱怨找不到路径,因为它当然不存在。
我想知道是否有可能在非标准的ssh端口上rsync到远程主机。
当前回答
另一种选择,在你运行rsync的主机上,在ssh配置文件中设置端口,即:
cat ~/.ssh/config
Host host
Port 2222
然后rsync将通过ssh与端口2222通信:
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
其他回答
我无法让rsync在不同的端口上通过ssh连接,但我能够通过iptables将ssh连接重定向到我想要的计算机。这不是我想要的解决方案,但它解决了我的问题。
有点跑题了,但也许能帮到别人。如果你需要传递密码和端口,我建议使用sshpass包。命令行命令看起来像这样: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/
你的命令行应该是这样的:
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 Hike Hostetler的网站上找到了这个解决方案,它非常适合我。
# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/