Scp z jednego serwera na inny serwer?

34

Próbuję skopiować pliki z jednego serwera bezpośrednio na inny, omijając mój komputer lokalny.

Zrobiłem

scp -r [email protected]:~/data/* [email protected]:~/data/
Password: 
Host key verification failed.
lost connection

Czy to w ogóle możliwe? Jak mogę to naprawić?

Hazard Sibbs
źródło
Czy możesz opublikować dane wyjściowe następującego polecenia: scp -r -v [email protected]: ~ / data / * [email protected]: ~ / data /
pragmatyczny

Odpowiedzi:

55

Coś, czego używam dość często, gdy nie ma możliwości połączenia między dwoma serwerami

scp -3 user@server1:/path/to/file user@server2:/path/to/file

źródło

-3 Kopie między dwoma hostami zdalnymi są przesyłane przez hosta lokalnego. Bez tej opcji dane są kopiowane bezpośrednio między dwoma zdalnymi hostami. Pamiętaj, że ta opcja wyłącza miernik postępu.

Zakładając, że masz dobre połączenie z oboma, nie jest to zbyt wolne.

exussum
źródło
Ponadto, jeśli chcesz użyć specjalnych portów na obu serwerach: superuser.com/questions/686394/...
Pit
Nie zapomnij dodać -rflagi, jeśli kopiujesz katalog.
Taylor Edmiston
16

Tak, jest to możliwe, ale tylko jeśli server1.commożna do server2.comniego dotrzeć , używając tej nazwy. Jeśli nie, prawdopodobnie otrzymasz wiadomość:ssh: connect to host server2 port 22: Connection refused

manAktualizacja scpwyraźnie stwierdza, że kopie między hostami w sieci oraz że:

Dozwolone są również kopie między dwoma zdalnymi hostami.

To, co powinieneś zrobić (raz) to sshdo [email protected]i stamtąd sshdo [email protected]. Odpowiedz na pytanie dotyczące autentyczności, które otrzymasz, tak, aby pozbyć się komunikatu weryfikującego klucz hosta podczas wykonywaniascp

Konieczne może być włączenie agenta przekazującego za pomocą:

scp -o "ForwardAgent yes" -r [email protected]:~/data/* [email protected]:~/data/

Ale upewnij się, że zdajesz sobie sprawę z niebezpieczeństwa ( man ssh_config)

Anthon
źródło
Właśnie sshed od server1.comdo server2.com, a ja rzeczywiście odpowiedział na pytanie i się udało. Następnie wracam do komputera lokalnego, robię to jeszcze raz i wyświetlam server2.commonit o hasło. Ale tam się nie udaje z:Permission denied (publickey,keyboard-interactive). lost connection
Sibbs Gambling
1
@SibbsGambling Myślę, że to zależy od przekazania twojego klucza prywatnego. Czy możesz zalogować się na oba serwery bez podawania hasła? Czy możesz zalogować się od server1do server2bez podawania hasła? Może być konieczne ustawienie „ForwardAgent yes”.
Anthon
1

Najpierw musisz sprawdzić, czy możesz ssh na server2 bez żadnego błędu, jeśli otrzymasz ten sam błąd, to otwórz plik ~/.ssh/known_hostsi wyszukaj klucz server2 i usuń go.

Następnie sprawdź, czy możesz pingować serwer według nazwy hosta

Jeśli nie, edytuj oba pliki hosta serwera, jak wspomniano poniżej

 #vi /etc/hosts  
 server1 192.186.x.x  
 server2 192.186.x.xx   
 :wq   ---> to save  

Po zakończeniu pracy z tym dyskiem CD przejdź do lokalizacji pliku, który chcesz skopiować na serwer2

scp file_name user@server2:/path_to_the_directory ---> można użyć adresu IP zamiast nazwy hosta można wspomnieć -Rskopiować katalog.

Kundel
źródło
0

Sprawdź, czy ~/.ssh/known_hostsmasz odpowiednie rekordy dla obu serwerów

Sprawdź także, czy serwer 1 ma odpowiedni ~/.ssh/known_hostsrekord dla serwera 2

Romeo Ninov
źródło
-2

Możesz użyć tego polecenia poniżej, aby skopiować plik z jednego serwera na inny:

scp source_user@source_remote_host:/usr/bin/mysql_backup.sh \
         target_user@target_remote_host:/var/tmp/
karthik m
źródło