
Я пытаюсь выполнить перенос с сайта на сайт со следующей конфигурацией. У меня есть старый сервер (server-A), новый сервер (server-B) и моя рабочая станция (wks), на которой я хотел бы запустить перенос.
Произведен обмен ключами SSH между wks и сервером A/B.
Сервер-А и сервер-Б не обменивались ключами.
Я попробовал следующую команду со своей рабочей станции
scp -r root@server-A:/path/to/source/ root@server-B:/destination/path
но это не работает. Насколько я понимаю, сервер-A пытается подключиться к серверу-B, и поскольку обмен ключами не происходит, это не удается.
Есть идеи, как заставить передачу файлов работать для этой конкретной конфигурации?
решение1
Передача файлов с использованием прямого соединения между сервером-A и сервером-B является предпочтительным методом. Это то, что scp
пытаются сделать. Соответствующая частьman 1 scp
:
-3
Копии между двумя удаленными хостами передаются через локальный хост. Без этой опции данные копируются напрямую между двумя удаленными хостами. Обратите внимание, что эта опция отключает индикатор прогресса.
Вы правы, что без -3
опции "сервер-A пытается подключиться к серверу-B". Мои тесты показывают, что даже если сервер-B допускает аутентификацию на основе пароля, взаимодействие с tty (при запросе пароля) скорее всего будет проблемой. В таком случаеэтот комментарийкажется полезным:
ssh
на сервер A, запуститьscp
на сервере A (одна команда). Позволяет избежать копирования файлов дважды.
После того, как вы явно ssh
зашли на сервер-A, scp
не должно возникнуть проблем с взаимодействием с tty при запросе пароля для сервера-B. В качестве альтернативы вы можете ssh
зайти на сервер-B и вызвать его scp
там.
Если это невозможно (требуется ключ, пароль не разрешен), используйте scp -3
на своей рабочей станции. Очевидно, что это будет использовать вашу локальную машину как своего рода прокси, поэтому данные будут течь вниз и вверх по ее сетевому соединению(ям).
Однако не все scp
реализации поддерживают -3
это.