在更改主机IP后,使用ssh和root的rsync不起作用

我们有一台备份多台服务器的服务器。 备份服务器位于办公室,云中的所有其他服务器。

我们已经把所有的服务器都转移到一个新的IP上了,从这个时候起,备份就停止了。 。 在我们已经在rsync.conf(hosts allow = new IP)中授权新主机的主机上,以及在〜/ .ssh / nano authorized_keys中更改如:from =“new Ip”,ssh-rsa …. … root @ backup)。

但是它没有工作,所以我们生成了没有密码的新密钥对。

ssh-keygen 

我们已经复制到主机:

 ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected] 

因此,我们使用ssh和root组合的rsync

 rsync -az "ssh -i /root/.ssh/id_dsa.pub" [email protected]. folder1 folder2 

但在这种情况下,我们有这个错误:

错误:远程path必须以模块名称rsync错误启动:在main.c(1534)[Receiver = 3.0.9]远程主机:〜/ .ssh#rsync错误:启动客户端服务器协议(代码5)时收到SIGUSR1 (代码19)在main.c(1316)[Receiver = 3.0.9]

而在主机服务器,我们有这个日志:

10月20日13:35:44 remotehost sshd [21863]:pam_unix(sshd:auth):authentication失败; logname = uid = 0 euid = 0 tty = ssh ruser = rhost = new_IP user = root 10月20日13:35:46 remotehost sshd [21863]:New_IP端口的root密码失败56355 ssh2

在主机rsync服务正在运行。

我们已经尝试了几种方法并遵循了几个手册。

有人能帮我吗?,

提前致谢!!

UPDATE1:

这是我的两个节点的rsyncd.conf; 在备份服务器中:

 hosts allow = allow IP'S hosts deny = * [Remote_Server1] path= /var/backups/server1 comment = Server1 uid = root gid = root [Remote_Server2] path= /var/backups/server2 comment = Server2 uid = root gid = root 

在远程服务器中:

 hosts allow = backup server public IP hosts deny = * max connections = 48 syslog facility = daemon [root-server1] path = / comment = root directory of my server1 uid = root gid = root [etc-server1] path = /etc comment = Directory of my server1 uid = root gid = root [home-server1] path = /home comment = home of my server uid = root gid = root 

UPDATE2:

我有这样configurationssh:

在/ etc / ssh / sshd_config文件中

 PermitRootLogin forced-commands-only DSAAuthentication yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys 

而且,在远程服务器上的/root/.ssh/authorized_keys文件中,我有(本手册http://troy.jdmz.net/rsync/index.html )。

 from="My IP",command="/home/remoteuser/cron/validate-rsync"/ ssh-dss ADCD...1234......kEY root@backupserver 

validate-rsync文件是:

 #!/bin/sh case "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\`*) echo "Rejected" ;; *\|*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac 

有了这个configuration,我运行命令:

 rsync -azvvv -e "ssh -i /root/.ssh/rsync.key" root@remoteserver1::home-server1/ /home/local/ 

在这种情况下,我得到这个错误:

使用以下命令连接连接:ssh -i /root/.ssh/rsync.key -l root remoteserver1 rsync –server –daemon。 rsync:服务器发送“********************************************* *****************************“而不是问候rsync错误:错误启动客户端 – 服务器协议(代码5)在main.c (1534)[Receiver = 3.0.9] [Receiver] _exit_cleanup(code = 5,file = main.c,line = 1534):即将调用exit(5)

在日志中我有这个:

sshd [10408]:强制命令的根login被接受。 sshd [10408]:接受来自XXX.XXX.XXX端口的根的publickey 60543 ssh2 sshd [10408]:pam_unix(sshd:session):通过(uid = 0)为用户根打开的会话sshd [10408]:pam_unix(sshd:会话):closures用户root的会话

UPDATE3:

自从我们将服务器移到其他云端后,问题就开始了。 实际上,在这篇文章中解释的所有现有的configuration在旧的云中工作。 它可以是一些上层应用程序阻止新的云中的rsync? 我怎么检查它? 我们已经检查了端口。 感谢所有。

通常的做法是

 ssh-copy-id [email protected] 
  • 在这一点上,你通常inputroot @ distant的密码。

下一步;

 rsync [email protected] folder1 folder2 

我有麻烦了

我们已经复制到主机:

 ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected] 

因此,我们使用ssh和root组合的rsync

  rsync -az "ssh -i /root/.ssh/id_rsa.pub" [email protected] folder1 folder2 
  • 你同时使用dsa和rsa? 或者这是一个错字?
  • 如果id_rsa是您的默认密钥,则不需要指定它。
  • 据说,来自ssh -i标志需要私钥,而不是每个人都可以使用的.pub

我猜你的rsync命令你应该通过私钥而不是公共密钥。 你有没有尝试使用ssh -i /root/.ssh/id_rsa.pub命令在ssh中连接,我想这不应该起作用。

编辑:
给定rsyncd.conf,如果你想把你的文件从你的remote_servers(你也可以从备份服务器上的remote_server中提取文件)推送到backup_server,我会给你conf。

我假设你在remote_server2和backup_server之间有一个可用的ssh连接(以下命令应该将你连接到backup_server)。

 root@remote_server2 $ ssh root@backup_server 

从你要备份的服务器,我猜你的文件server1。

 root@remote_server2 $ rsync -az /what/you/want/to/backup/ root@backup-server::Remote_Server2/ 

您还需要将备份服务器上的rsyncd.conf修改为

 hosts allow = allow IP'S hosts deny = * [Remote_Server1] path= /var/backups/server1 comment = Server1 uid = root gid = root read only = false [Remote_Server2] path= /var/backups/server2 comment = Server2 uid = root gid = root read only = false 

你必须适应相同的,使其为remote_server1工作。

我们发现了这个问题! 我们用ssh和root制作Rsync。 看起来,主机服务器中的.bachrc有一个回显,这就是发生故障的原因(服务器迁移到安装新操作系统的新服务器之后):

rsync:服务器发送“****************这是回声**********************”而不是欢迎

rsync错误:错误启动客户端服务器协议(代码5)在main.c(1534)[Receiver = 3.0.9]

rsync不理解这个回声,所以失败了。 要解决这个问题,我们必须删除这个回声,并且同步运行良好。

感谢所有的评论!