Scp з одного сервера на інший сервер?


34

Я намагаюся копіювати файли з одного сервера безпосередньо на інший, минаючи мій локальний комп'ютер.

я зробив

scp -r usrname@server1.com:~/data/* usrname@server2.com:~/data/
Password: 
Host key verification failed.
lost connection

Це навіть можливо? Як я можу це виправити?


Чи можете ви розмістити висновок наступних команд-scp -r -v usrname@server1.com: ~ / data / * usrname@server2.com: ~ / data /
прагматичний

Відповіді:


55

Щось я використовую досить часто, коли між двома серверами неможливе з'єднання

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

джерело

-3 Копії між двома віддаленими хостами передаються через локальний хост. Без цієї опції дані копіюються безпосередньо між двома віддаленими хостами. Зауважте, що ця опція вимикає вимірювач прогресу.

Якщо припустити, що у вас є хороший зв’язок з обома, це не надто повільно.


Крім того, якщо вам потрібно використовувати спеціальні порти на обох серверах: superuser.com/questions/686394/…
Пт

Не забудьте додати -rпрапор, якщо ви копіюєте каталог.
Тейлор Едмістон

16

Так, це можливо, але лише якщо server1.comможна досягти server2.com, використовуючи це ім'я. Якщо ні, ви, ймовірно, отримаєте повідомлення:ssh: connect to host server2 port 22: Connection refused

На manсторінці scpчітко зазначено, що вона копіюється між хостами в мережі та що:

Копії між двома віддаленими хостами також дозволені.

Те , що ви повинні робити (один раз) це sshдо username@server1.comі звідти sshдо username@server2.com. Відповідайте на питання щодо автентичності, яке ви отримаєте з так, щоб позбутися повідомлення про підтвердження ключа хоста під час виконанняscp

Вам, можливо, доведеться активувати переадресацію за допомогою:

scp -o "ForwardAgent yes" -r usrname@server1.com:~/data/* usrname@server2.com:~/data/

Але не забудьте усвідомити небезпеку в цьому ( man ssh_config)


Я просто sshед від server1.comдо server2.com, і я дійсно відповів на питання і вдалося. Потім я повертаюся до свого локального комп'ютера, роблю це ще раз і отримую server2.comпідказку з паролем. Але це не вдається:Permission denied (publickey,keyboard-interactive). lost connection
Сіббс, азартні ігри

1
@SibbsGambling Я думаю, що це залежить від пересилання вашого приватного ключа. Чи можете ви увійти на обидва сервери, не вказавши пароль? Чи можете ви увійти в систему, server1щоб server2не вказати пароль. Можливо, вам доведеться встановити "ForwardAgent так".
Антон

1

По-перше, вам потрібно перевірити, чи ви здатні перейти на ssh до сервера2 без будь-якої помилки, якщо ви отримаєте ту саму помилку, то, будь ласка, відкрийте файл ~/.ssh/known_hostsта знайдіть ключ сервера2 та видаліть його.

Потім перевірте, чи можете ви пінг сервера за іменем хоста

Якщо ні, то відредагуйте обидва файли хосту сервера, як зазначено нижче

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

Після того, як ви закінчите з цим компакт-диском, розташуйте файл, який потрібно скопіювати на сервер2

scp file_name user@server2:/path_to_the_directory ---> ви можете використовувати IP - адреса замість імені хоста можна згадати , -Rщоб скопіювати каталог.


0

Перевірте ~/.ssh/known_hostsнаявність належних записів для обох серверів

Перевірте також наявність сервера1 належним ~/.ssh/known_hostsзаписом для server2


-2

Ви можете скористатися цією командою нижче, щоб скопіювати файл з одного сервера на інший:

scp source_user@source_remote_host:/usr/bin/mysql_backup.sh \
         target_user@target_remote_host:/var/tmp/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.