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 usrname@server1.com:~/data/* usrname@server2.com:~/data/
Password: 
Host key verification failed.
lost connection

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


Czy możesz opublikować dane wyjściowe następującego polecenia: scp -r -v nazwa_serwera@server1.com: ~ / data / * nazwa_serwera@server2.com: ~ / 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.


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 username@server1.comi stamtąd sshdo username@server2.com. 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 usrname@server1.com:~/data/* usrname@server2.com:~/data/

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


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.


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


-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/
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.