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

时间:2010-12-28 22:11:17

标签: ssh rsync

我一直在尝试以下命令:

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

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

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

9 个答案:

答案 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 守护程序,该守护程序不存在。