我一直在尝试以下命令:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
Run Code Online (Sandbox Code Playgroud)
SSH在端口2222上运行,但是rsync仍然尝试使用端口22然后抱怨没有找到路径,因为它当然不存在.
我想知道是否可以rsync到非标准ssh端口上的远程主机.
小智 591
您的命令行应如下所示:
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path
Run Code Online (Sandbox Code Playgroud)
这工作正常 - 我一直使用它而不需要任何新的防火墙规则 - 只需注意SSH命令本身用引号括起来.
Joa*_*sta 121
另一个选项,在运行rsync的主机中,在ssh配置文件中设置端口,即:
cat ~/.ssh/config
Host host
Port 2222
Run Code Online (Sandbox Code Playgroud)
然后通过ssh的rsync将与端口2222通信:
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
Run Code Online (Sandbox Code Playgroud)
Tec*_*hie 15
当您需要通过特定SSH端口发送文件时:
rsync -azP -e "ssh -p PORT_NUMBER" source destination
Run Code Online (Sandbox Code Playgroud)
例
rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
Run Code Online (Sandbox Code Playgroud)
使用"rsh选项".例如:
rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups
Run Code Online (Sandbox Code Playgroud)
参考:http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
正确的语法是告诉 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 人:
推送:rsync [OPTION...] SRC... [USER@]HOST:DEST
这会误导人们尝试这个:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
但是,这指示它连接到端口 2222 上的Rsync守护程序,该端口不存在。
小智 5
运行 Linux Ubuntu 我使用以下命令
rsync -rvz --rsh='ssh -p2222' --progress --remove-sent-files ./dir user@host:/path
这将 rsh 环境变量作为端口 2222 上的 ssh 连接传递。这里的所有其他方法似乎都不适合我的 Linux 风格,所以我想向其他人提供我的方法。
您还可以通过使用 -e 命令行选项或设置 RSYNC_RSH 环境变量来指定您喜欢的任何远程 shell。
Rsync 文档: https://download.samba.org/pub/rsync/rsync.1