У нас есть сервер для резервного копирования нескольких серверов. Сервер резервного копирования находится в офисе, а все остальные серверы - в облаке.
Мы переместили весь сервер на новый IP, и с этого момента резервное копирование прекратилось. . В хостах мы авторизовали новый IP-адрес в rsync.conf (hosts allow = new IP), а также в ~ / .ssh / nano authorized_keys, изменив на like: from = "new Ip", ssh-rsa .... ... root @ backup).
Но это не сработало, поэтому мы сгенерировали новую пару ключей без парольной фразы.
ssh-keygen
И мы скопировали на хост:
ssh-copy-id -i /root/.ssh/id_dsa.pub user@remote.host.com
Мы используем комбинированный rsync с ssh и root, поэтому
rsync -az "ssh -i /root/.ssh/id_dsa.pub" root@remote.host. folder1
folder2
но в этом случае у нас есть такая ошибка:
ОШИБКА: удаленный путь должен начинаться с имени модуля. Ошибка rsync: ошибка запуска клиент-серверного протокола (код 5) на main.c (1534) [Receiver = 3.0.9] remotehost: ~ / .ssh # ошибка rsync: получен SIGUSR1 (код 19) на main.c (1316) [Receiver = 3.0.9]
И на хост-сервере у нас есть этот журнал:
20 октября 13:35:44 удаленный хост sshd [21863]: pam_unix (sshd: auth): ошибка аутентификации; logname = uid = 0 euid = 0 tty = ssh ruser = rhost = new_IP user = root 20 октября 13:35:46 remotehost sshd [21863]: неверный пароль для root от порта New_IP 56355 ssh2
На хосте работает служба 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 error: ошибка запуска клиент-серверного протокола (код 5) на main.c (1534) [Receiver = 3.0.9] [Receiver] _exit_cleanup (code = 5, file = main.c, line = 1534): собирается вызвать exit (5)
И в журналах у меня есть это:
sshd [10408]: Вход в систему с правами root принят для принудительной команды. sshd [10408]: принятый открытый ключ для root от XXX.XXX.XXX порт 60543 ssh2 sshd [10408]: pam_unix (sshd: session): сеанс открыт для пользователя root пользователем (uid = 0) sshd [10408]: pam_unix (sshd: session): сеанс закрыт для пользователя root
Обновление 3:
Проблема началась с тех пор, как мы переместили серверы в другое облако. Фактически, все существующие конфигурации, описанные в этом посте, работают в старом облаке. Может быть, какое-то приложение верхнего уровня блокирует rsync в новом облаке ?. Как я мог это проверить? мы уже проверили порты. Спасибо за все.
Я предполагаю, что в вашей команде rsync вы должны передать закрытый ключ, а не открытый. Вы пробовали подключиться по ssh с помощью команды ssh -i /root/.ssh/id_rsa.pub
Я думаю, это не должно сработать.
Редактировать:
Учитывая rsyncd.conf, я дам вам conf, если вы хотите отправить свои файлы на backup_server с ваших remote_servers (вы также можете получить файлы с remote_server на сервере резервного копирования).
Я предполагаю, что у вас есть работающее ssh-соединение между remote_server2 и backup_server (следующая команда должна подключить вас к 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-copy-id root@remote.host.com
Следующий шаг;
rsync root@remote.host.com folder1 folder2
rsync root@remote.host.com:/data folder1 folder2
синхронизировать с /data
У меня проблема
И мы скопировали на хост:
ssh-copy-id -i /root/.ssh/id_dsa.pub user@remote.host.com
Мы используем комбинированный rsync с ssh и root, поэтому
rsync -az "ssh -i /root/.ssh/id_rsa.pub" root@remote.host.com folder1 folder2
id_rsa
- ваш ключ по умолчанию, указывать его не нужно.-i
флаг от ssh
требуется закрытый ключ, а не .pub
доступен всем.Мы обнаружили проблему! Делаем Rsync с ssh и root. Кажется, что .bachrc на хост-сервере имеет эхо, и это то, что дало сбои (после миграции сервера на новый сервер с новой установкой ОС):
rsync: сервер отправил "**************** это эхо *********************", а не приветствие
Ошибка rsync: ошибка при запуске протокола клиент-сервер (код 5) на main.c (1534) [Receiver = 3.0.9]
Rsync не распознает это эхо, поэтому он не прошел. Чтобы исправить это, нам пришлось удалить это эхо, и синхронизация прошла хорошо.
Спасибо всем, кто прокомментировал !.