Nie można używać protokołu SSH z serwera produkcyjnego do serwera rezerwowego do czasu ponownego uruchomienia SSH na serwerze rezerwowym


Posiadamy serwer dedykowany z systemem CentOS 6.5, który jest serwerem produkcyjnym dla naszej strony internetowej. Mam lokalny serwer, który został ponownie wykorzystany jako serwer zapasowy, również z CentOS 6.5 i jest tutaj tylko do przechowywania plików kopii zapasowych. Wszystkie wymagane aktualizacje są instalowane na obu serwerach.
Na serwerze produkcyjnym mam zaplanowane skrypty zapasowe do uruchomienia przez cron w celu utworzenia plików kopii zapasowych i synchronizacji ich z serwerem kopii zapasowych. Wszystkie skrypty działają na czas, ale rsync nie działa z powodu przekroczenia limitu czasu SSH podczas próby skontaktowania się z serwerem multimediów.
Tutaj utknąłem. Mogę używać zarówno PuTTY, jak i WinSCP, aby zalogować się do serwera kopii zapasowych przez SSH, nawet jeśli upłynął limit czasu skryptów. Jak tylko zrestartuję usługę sshd na serwerze backupu, skrypty na serwerze produkcyjnym działają płynnie (zarówno z linii poleceń jak i przez cron).
Wygląda na to, że serwer backupu po tylu latach przestał słuchać serwera produkcyjnego.
Kilka dodatkowych informacji przed zapytaniem:
  • Zapora serwera zapasowego zezwala na wszystkie połączenia z serwera produkcyjnego
  • Skrypty działają dobrze zarówno z wiersza poleceń, jak iz crona, jeśli usługa sshd na serwerze kopii zapasowych została ponownie uruchomiona (tj. Nie jest to problem ze skryptem)
  • SSH używa uwierzytelniania za pomocą klucza publicznego do weryfikacji połączenia
  • Nie mogę znaleźć żadnych błędów w dziennikach SSH dla serwera rezerwowego. Znowu wygląda na to, że po prostu przestaje słuchać serwera produkcyjnego, mimo że mogę połączyć się z osobnej maszyny.

Naprawdę potrzebuję pomocy w tym, czego szukać. Mogłem skonfigurować skrypt, aby zrestartować usługę sshd na serwerze kopii zapasowych tuż przed uruchomieniem skryptu przez serwer produkcyjny, ale brzmi to zbyt podobnie jak włamanie, a nie poprawka. Każda pomoc będzie bardzo wdzięczna.

edytować
>
Zażądano przykładowego skryptu. Spowoduje to utworzenie kopii zapasowych baz danych i zsynchronizowanie ich wraz z rsync całego katalogu witryny internetowej:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# -----------------
# NIGHTLY BACKUP SCRIPT
# -----------------
# --Set log file and capture parameters
exec &>/path/logfile.log
#
# --Set Current Date Time
now=$(date +"%Y-%m-%d")
#
# --Backup Database 1
/usr/bin/mysqldump -u USER -pPASSWORD DATABASE1 |/bin/gzip >/path/database1-$now.sql.gz
#
# --Backup Database 2
/usr/bin/mysqldump -u USER -pPASSWORD DATABASE2 |/bin/gzip >/path/database2-$now.sql.gz
#
# --Sync Database Backups to Remote Server
/usr/bin/rsync -avz -e "ssh -v -p # -i/path/key"/path USER@IP:/path
#
# --Sync all Website Files to Remote Server
/usr/bin/rsync -avz --delete -e "ssh -v -p # -i/path/key"/path USER@IP:/path


Edytuj 2
>
Zażądano wyjścia dziennika. Poniżej przedstawiono dane wyjściowe dziennika dla wiersza rsync z powyższego skryptu „Synchronizuj kopie zapasowe bazy danych z serwerem zdalnym”.
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data/etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to IP [IP] port #.
debug1: connect to address IP port #: Connection timed out
ssh: connect to host IP port #: Connection timed out
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]

Zostałem również poproszony o uruchomienie następującego polecenia:
       nc -v IP PORT
Jednak wyniki były praktycznie takie same jak w magazynie:
nc: connect to IP port # (tcp) failed: Connection timed out

Po ponownym uruchomieniu usługi sshd na serwerze kopii zapasowych i ponownym uruchomieniu polecenia nc otrzymałem to:
Connection to IP # port [tcp/fpo-fns] succeeded!
SSH-2.0-OpenSSH_5.3

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W ramach testu utworzyłem skrypt do uruchamiania co godzinę i rsyncowania katalogu witryny z serwera produkcyjnego na serwer multimediów. Pomyślałem, że ustalę przynajmniej przybliżony czas, w którym serwer zapasowy przestanie zezwalać na połączenia z serwerem produkcyjnym. Zamiast tego, skrypt godzinowy i wszystkie inne skrypty od wczoraj działają płynnie.
Chociaż nie uważam tego za rzeczywistą „poprawkę”, to przynajmniej rozwiązało problem i nie muszę już ręcznie rozpoczynać tworzenia kopii zapasowej przez ponowne uruchomienie usługi sshd na serwerze multimediów, a następnie uruchomienie skryptów na serwerze produkcyjnym . Jeśli ktoś ma jakieś pojęcie, dlaczego to rozwiąże problem, daj mi znać w komentarzach, ponieważ nadal chciałbym znaleźć główną przyczynę.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się