Передача файлов с использованием прямого соединения между сервером 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
.