我们有一个服务器,用于备份多个服务器。备份服务器位于办公室,其他所有服务器位于云端。
我们已将所有服务器移至新 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
- 这将同步[电子邮件保护]主目录,用于同步
rsync [email protected]:/data folder1 folder2
/data
我有麻烦了
并且我们已经抄送给主持人:
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 无法理解此回显,因此失败。为了修复此问题,我们必须删除此回显,这样同步就可以正常工作。
感谢所有发表评论的人!