通过堡垒机使用目标服务器非标准端口执行Rsync
通过堡垒机使用Rsync同步到非标准端口的SSH服务器
没问题,我来帮你搞定这个场景。你现在的核心需求是把ProxyCommand的逻辑和非标准SSH端口结合起来,不管是直接ssh连接还是用rsync同步都能生效,分两种方式给你说明:
方式1:直接在命令行指定参数
首先调整SSH连接命令
你原来的命令是针对默认22端口的,要连接12345端口,只需要给外层ssh加上-p 12345参数就行——因为ProxyCommand里的%p会自动替换成你指定的目标端口,堡垒机就会把流量转发到目标主机的12345端口:
ssh -o ProxyCommand="ssh -W %h:%p admin@bastion-host" -p 12345 user@destination-host
这个命令现在就能直接连到目标主机的非标准SSH端口了。
适配Rsync同步命令
Rsync默认用ssh作为传输通道,你只需要通过-e参数把上面的ssh配置传递给rsync就行,比如同步本地目录到目标主机:
rsync -avz -e "ssh -o ProxyCommand='ssh -W %h:%p admin@bastion-host' -p 12345" /本地源路径 user@destination-host:/目标路径
解释下关键参数:
-avz:归档模式(保留权限、时间戳等)+ 显示详细信息 + 压缩传输,是rsync的常用组合-e:指定rsync使用的远程shell程序,这里就是我们配置好的带堡垒机和非标准端口的ssh命令
方式2:通过SSH配置文件简化命令(更推荐)
如果不想每次都输这么长的命令,可以把配置写到~/.ssh/config里,以后不管是ssh还是rsync都能一键调用:
Host destination-host User user Port 12345 ProxyCommand ssh -W %h:%p admin@bastion-host
保存配置后,直接用下面的命令就能连接目标主机:
ssh destination-host
Rsync同步也变得非常简洁:
rsync -avz /本地源路径 destination-host:/目标路径
这种方式更省心,尤其是需要频繁操作的场景。
内容的提问来源于stack exchange,提问作者Blender Fox
相关产品推荐
相关产品推荐

