Я пытаюсь сделать перевод сайта на сайт со следующей конфигурацией. У меня есть старый сервер (сервер-A), новый сервер (сервер-B) и моя рабочая станция (wks), на которой я хотел бы запустить передачу.

Обмен ключами SSH был сделан между wks и server-A/B.

Сервер-A и сервер-B не имеют обмененных ключей.

Я попробовал следующую команду с моей рабочей станции

scp -r root@server-A:/path/to/source/ root@server-B:/destination/path

но это не работает Насколько я понимаю, сервер A пытается подключиться к серверу B, и, поскольку обмен ключами не выполняется, происходит сбой.

Есть идеи, как заставить передачу файлов работать для этой конкретной конфигурации?

1 ответ1

2

Передача файлов с использованием прямого соединения между сервером A и сервером B является предпочтительным методом. Это то, что пытается сделать scp . Соответствующая часть man 1 scp:

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

Вы правы, что без опции -3 «сервер-А пытается подключиться к серверу-В». Мои тесты показывают, что, даже если сервер-B разрешает аутентификацию на основе пароля, взаимодействие с tty (при запросе пароля), скорее всего, будет проблемой. В таком случае этот комментарий кажется полезным:

ssh на сервер A, запустите scp на сервере A (одна команда). Избегает копирования файлов дважды.

После явного ssh в сервер-A, вызываемый scp не должен иметь проблем с взаимодействием с tty при запросе пароля для сервера-B. В качестве альтернативы вы можете ssh на сервер-B и вызвать там scp .

Если это невозможно (требуется ключ, пароль запрещен), используйте scp -3 на своей рабочей станции. Очевидно, что это будет использовать ваш локальный компьютер в качестве прокси-сервера, поэтому данные будут передаваться по его сетевым подключениям.

Не все реализации scp поддерживают -3 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .