У меня есть ssh'd на удаленной машине, и на этой машине запустите scp для копирования файлов с другой удаленной машины. Я предполагал, что файлы будут скопированы непосредственно между двумя удаленными машинами, но скорость передачи предполагает, что они копируются через мою локальную машину. Это правильно? Можно ли этого избежать?
2 ответа
Согласно википедии, вы правы, это происходит через вашу связь:
Удаленный к удаленному режиму [править] В прошлом, при удаленном удаленном безопасном копировании, клиент SCP открывает SSH-соединение с исходным хостом и запрашивает, чтобы он, в свою очередь, открывал SCP-соединение с адресатом. (Режим «от удаленного к удаленному» не поддерживает открытие двух соединений SCP и использование исходного клиента в качестве посредника). Важно отметить, что SCP нельзя использовать для удаленного копирования из источника в место назначения при работе в режиме аутентификации с использованием пароля или клавиатуры, так как это приведет к раскрытию учетных данных аутентификации сервера назначения для источника. Однако это возможно при использовании методов на основе ключей или GSSAPI, которые не требуют ввода данных пользователем. [2]
В последнее время режим «от удаленного к удаленному» поддерживает маршрутизацию трафика через клиента, который инициировал передачу, даже если он является третьей стороной для передачи. Таким образом, учетные данные авторизации должны находиться только на исходном клиенте, третьей стороне.
Чтобы сделать то, что вы хотите, и избежать сторонней маршрутизации трафика, вам нужно настроить ключи ssh.
В эти дни есть две возможности, как скопировать файлы с использованием scp
между двумя удаленными хостами:
Простой работает напрямую, но недостатком является то, что вам нужно пройти аутентификацию с
host1
наhost2
(используя пароль, ключ, хранящийся наhost1
или переадресованный ssh-agent):scp host1:file host2:file
Опция
-3
добавляет возможность аутентификации непосредственно с вашего хоста на оба удаленных хоста (не раскрывайте информацию аутентификации), но вы всегда проходите через локальный хост и теряете большинство сообщений об ошибках из-за реализации.scp -3 host1:file host2:file
Даже если вы передаете данные напрямую, вы не сможете покрыть всю полосу пропускания, если у вас не применено исправление HPN-SSH .