我的服务器上的每个端口都被阻塞,除了222端口是ssh连接。 这台服务器几乎是一个备份服务器,我有我的客户rsync。
我通过使用ssh的端口转发( -P 222 -L 873:myserver.com:873 )来做到这一点,但是,我只想使用rsync命令来做到这一点。 那可能吗?
这是我一直在尝试:
sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://bt-backup@localhost/backup-bt-backup
但它不起作用,因为我尝试login到本地主机,而不是myserver.com。
这样做的:
sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://[email protected]/backup-bt-backup
让我通过SSHlogin,但rsync尝试远程主机,而不是端口已被转发的本地主机
如果服务器运行SSHd,那么你可以直接使用rsync通过SSH 。
比如我运行类似的东西
rsync -a --inplace some/dir/ [email protected]:/destination/dir/
每时每刻。 无需将rsync作为守护程序运行,也不需要启用端口转发,因为rsync将使用SSH链接启动自身副本,并通过SSH链接处理其与该实例之间的所有同步(并且远程副本将作为连接closures被丢弃,所以你不会结束一堆僵尸进程)。
要通过标准以外的端口进行通信,您只需要给rsync一些额外的信息来说明如何pipe理连接,如下所示:
rsync -a --inplace -e 'ssh -p 222' some/dir/ [email protected]:/destination/dir/
这实际上更安全(所有的rsync通信都受到SSH安全传输的保护,而通过端口转发,所有内容都被简单地发送出去),并且更方便(不需要rsyncd,而且您可以使用基于SSH的密钥validation)
rsync -av –progress –inplace –rsh ='ssh -p8023'somefile user @ host:somedir /
从http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
如果要在远程主机上使用rsyncd(使用/etc/rsyncd.confconfiguration),则只需要端口转发。
使用脚本覆盖ssh。 用以下内容创build一个脚本ssh-connection.sh :
#! /bin/bash ssh -p 222 -L 873:myserver.com:873 -l bt-backup myserver rsync --server --daemon .
不要忘记给它可执行权限: chmod u+rx ssh-connection.sh
这个脚本故意忽略了这个论点。 它应该用作:
sudo rsync -avv --progress --inplace --rsh='./ssh-connection.sh' . rsync://localhost/backup-bt-backup
祝你好运,
JoãoMiguel Neves