Как передать файл между двумя удаленными серверами с помощью 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
Любые предложения?
Ответы
Ответ 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 ответ тоже, но это кажется более прямым.