我一直在尝试以下命令:
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到远程主机。
当前回答
我的2美分,在一个系统用户中,你可以在/etc/ssh/ssh_config上设置端口,然后rsync将使用这里设置的端口
其他回答
使用“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/
你的命令行应该是这样的:
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path
这很好-我一直在使用它,不需要任何新的防火墙规则-只是注意SSH命令本身是用引号括起来的。
当在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);)
当您需要通过指定的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/