Подтвердить что ты не робот

Как передать файл между двумя удаленными серверами с помощью scp с третьего локального компьютера?

Я пытаюсь скопировать файл с одного удаленного сервера на другой удаленный сервер с моей локальной машины. Вот что я пытаюсь сделать

localA $ scp [email protected]:/path/to/file [email protected]:/path

Проблема заключается в том, что мне нужно передать два пароля для userB и userC на удаленных компьютерах.

В соответствии с Garron выше должно работать, но я получил разрешение на отказ.

Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection

Любые предложения?

4b9b3361

Ответ 1

Эти вопросы уже существуют в суперпользователе:

https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-my-third-pc

scp -3 [email protected]:/home/user1/file1.txt [email protected]:/home/user2/file1.txt

Как описано здесь, опция -3 указывает команду scp для маршрутизации трафика через ПК, на котором выдается команда.

Вышеуказанное верно, если remote1 и remote2 находятся в одной сети.

В случае не: - вам нужно использовать переадресацию портов

Ответ 2

Если вы можете использовать ssh для обоих удаленных серверов из локального (local → remote1 и local → remote2), вы можете попробовать:

ssh -A -t [email protected] scp srcpath [email protected]:destpath

Это будет передаваться прямо с remote1 на remote2, используя ваши локальные учетные данные полностью.

Если вы не хотите, чтобы вас запрашивали пароли, вы должны настроить файл authorized_keys на пульте.

Ответ 3

Это возможно, используя следующую командную строку в терминале linux:

scp -3 user1 @ip: путь/из/directory/user2 @ip: путь/в каталог

появится запрос с запросом таких паролей:

user1 @ip пароль: user2 @ip пароль:

Если вы дадите оба пароля в порядке, нажав клавишу ввода после первого пароля, он должен принять, но это не будет. Даже если вы снова дадите оба пароля в порядке, но не нажимая "enter" после первого пароля, он не будет снова принят.

Сначала вы должны указать user2, затем нажмите "Enter", а затем введите пароль user1 и нажмите "Enter". Это будет работать.

Я знаю, что это звучит не так, но только это сработает. Это ошибка в scp.

Ответ 4

Вам нужны только пароли, если у вас нет записей в файле authorised_keys. После того, как вы вошли на 2 сервера (localA → remoteB и remoteB → remoteC) и установили безопасное соединение, ваша исходная команда должна работать.

Ответ 5

Я нахожу -o "ForwardAgent yes" делает трюк:

localA $ scp -o "ForwardAgent yes" [email protected]:/path/to/file [email protected]:/path

Мне нравится это лучше, чем -3, так как я не хочу, чтобы средняя машина замедляла работу. Мне нравится @RubenCaro ответ тоже, но это кажется более прямым.