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
Sibbs Gambling

1
@SibbsGambling Я думаю, что это зависит от пересылки вашего личного ключа. Можете ли вы войти на оба сервера без ввода пароля? Не могли бы вы войти в систему с server1к server2без ввода пароля. Возможно, вам придется установить «ForwardAgent yes».
Энтон

1

Во-первых, вам нужно проверить, что вы можете без проблем использовать ssh на server2, если вы получаете ту же ошибку, то, пожалуйста, откройте файл, ~/.ssh/known_hostsнайдите ключ server2 и удалите его.

Затем проверьте, можете ли вы пинговать сервер по имени хоста.

Если нет, то отредактируйте оба файла хоста сервера, как указано ниже

 #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есть ли правильные записи для обоих серверов

Проверьте также, есть ли у server1 правильная ~/.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.