Назад | Перейти на главную страницу

Rsync с ssh и root не работает после изменения IP-адреса хоста

У нас есть сервер для резервного копирования нескольких серверов. Сервер резервного копирования находится в офисе, а все остальные серверы - в облаке.

Мы переместили весь сервер на новый 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
  • на этом этапе вы обычно вводите пароль для root @ distant.

Следующий шаг;

rsync  root@remote.host.com folder1 folder2    
  • это будет синхронизироваться с домашним каталогом root@remote.host.com, используйте 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
  • вы используете и dsa, и rsa? или это опечатка?
  • Если id_rsa - ваш ключ по умолчанию, указывать его не нужно.
  • как сказано, -i флаг от ssh требуется закрытый ключ, а не .pub доступен всем.

Мы обнаружили проблему! Делаем Rsync с ssh и root. Кажется, что .bachrc на хост-сервере имеет эхо, и это то, что дало сбои (после миграции сервера на новый сервер с новой установкой ОС):

rsync: сервер отправил "**************** это эхо *********************", а не приветствие

Ошибка rsync: ошибка при запуске протокола клиент-сервер (код 5) на main.c (1534) [Receiver = 3.0.9]

Rsync не распознает это эхо, поэтому он не прошел. Чтобы исправить это, нам пришлось удалить это эхо, и синхронизация прошла хорошо.

Спасибо всем, кто прокомментировал !.