更改主机 IP 后,使用 ssh 和 root 的 Rsync 无法工作

更改主机 IP 后,使用 ssh 和 root 的 Rsync 无法工作

我们有一个服务器,用于备份多个服务器。备份服务器位于办公室,其他所有服务器位于云端。

我们已将所有服务器移至新 IP,从此刻起备份停止。在主机中,我们已在 rsync.conf 中授权新 IP(主机允许 = 新 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]

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

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

但在这种情况下,我们会出现这个错误:

错误:远程路径必须以模块名开头 rsync 错误:启动客户端-服务器协议时出错(代码 5)在 main.c(1534) [Receiver=3.0.9] remotehost:~/.ssh# rsync 错误:收到 SIGUSR1(代码 19)在 main.c(1316) [Receiver=3.0.9]

在主机服务器中我们有此日志:

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

在主机中,rsync 服务正在运行。

我们尝试了多种方法并遵循了多本手册。

有人能帮我吗?,

提前致谢!!

更新1:

这是我在两个节点上的 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

更新2:

我已经将 ssh 配置如下:

在 /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

使用此配置,我运行以下命令:

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 错误:在 main.c(1534) 处启动客户端-服务器协议(代码 5)时出错 [Receiver=3.0.9] [Receiver] _exit_cleanup(code=5,file=main.c,line=1534):即将调用 exit(5)

在日志中我有这个:

sshd[10408]: 强制命令接受 root 登录。sshd[10408]: 从 XXX.XXX.XXX 端口 60543 接受 root 的公钥 ssh2 sshd[10408]: pam_unix(sshd:session): 由 (uid=0) 为用户 root 打开会话 sshd[10408]: pam_unix(sshd:session): 为用户 root 关闭会话

更新3:

自从我们将服务器移至其他云后,问题就开始了。事实上,本文中介绍的所有现有配置在旧云中都有效。可能是某些上层应用程序阻止了新云中的 rsync?我该如何检查?我们已经检查了端口。谢谢大家。

答案1

通常的做法是

ssh-copy-id [email protected]
  • 此时,您通常会输入 root@distant 的密码。

下一步;

rsync  [email protected] folder1 folder2    

我有麻烦了

并且我们已经抄送给主持人:

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

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

 rsync -az "ssh -i /root/.ssh/id_rsa.pub" [email protected] folder1 folder2
  • 您同时使用 dsa 和 rsa 吗?或者这是打字错误?
  • 如果id_rsa是您的默认密钥,则无需指定它。
  • 如上所述,-i标志ssh需要私钥,并不是.pub每个人都可以使用。

答案2

我猜你应该在 rsync 命令中传递私钥而不是公钥。你尝试用该命令在 ssh 中连接了吗? ssh -i /root/.ssh/id_rsa.pub 我猜它应该不起作用。

编辑:
给定 rsyncd.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。

答案3

我们发现了问题!我们用 ssh 和 root 进行 Rsync。看来主机服务器中的 .bachrc 有回显,这就是导致失败的原因(在服务器迁移到安装了新操作系统的新服务器后):

rsync:服务器发送“****************这是回声***********************”而不是问候语

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

rsync 无法理解此回显,因此失败。为了修复此问题,我们必须删除此回显,这样同步就可以正常工作。

感谢所有发表评论的人!

相关内容