我一直在尝试以下命令:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
SSH正在端口2222上运行,但是rsync仍然尝试使用端口22,然后抱怨没有找到路径,因为它当然不存在。
我想知道是否可以rsync到非标准ssh端口上的远程主机。
答案 0 :(得分:547)
您的命令行应如下所示:
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path
这很好用 - 我一直使用它而不需要任何新的防火墙规则 - 只需注意SSH命令本身用引号括起来。
答案 1 :(得分:112)
另一个选项,在运行rsync的主机中,在ssh配置文件中设置端口,即:
cat ~/.ssh/config
Host host
Port 2222
然后ssh上的rsync将与端口2222对话:
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
答案 2 :(得分:13)
当您需要通过特定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
答案 3 :(得分:7)
使用“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/
答案 4 :(得分:2)
有点offtopic但可能会帮助某人。如果您需要传递密码和端口我建议使用sshpass
包。命令行命令如下所示:
sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/
答案 5 :(得分:0)
我在Mike Hike Hostetler's网站上找到了这个解决方案,对我来说非常合适。
# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
答案 6 :(得分:0)
我的 2cents,在单个系统用户中,您也可以在 /etc/ssh/ssh_config 上设置端口,然后 rsync 将使用此处设置的端口
答案 7 :(得分:-2)
我无法通过ssh在另一个端口上获得rsync连接,但我能够通过iptables将ssh连接重定向到我想要的计算机。这不是我想要的解决方案,但它解决了我的问题。
答案 8 :(得分:-2)
正确的语法是告诉Rsync使用自定义SSH命令(添加-p 2222),它使用SSH创建到远程端的安全隧道,然后通过localhost连接:873
rsync -rvz --progress --remove-sent-files -e“ssh -p 2222”./ dir user @ host / path
Rsync作为TCP端口873上的守护进程运行,这是不安全的。
来自Rsync man:
推送:rsync [选项...] SRC ... [USER @]主机:DEST
误导人们试图这样做:
rsync -rvz --progress --remove-sent-files ./dir user @ host:2222 / path
但是,这是指示它连接到端口2222上的 Rsync 守护程序,该守护程序不存在。