Безусловно, самый простой способ - просто скопировать его через scp. Кроме того, этот синтаксис на самом деле работает в отличие от некоторых других предложений.
Вы не можете победить этот синтаксис для простоты. Это позволяет вам рекурсивно копировать, rsync или все, что вам нужно, без необходимости рассматривать потенциально сложные каналы. Этот синтаксис интуитивно понятен, его будут более легко поддерживать администраторы Sys, которые следуют за вами, и не используют бесполезно cat .
scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to
Со страницы руководства scp : -3
Копии между двумя удаленными хостами передаются через локальный хост. Без этой опции данные копируются непосредственно между двумя удаленными хостами. Обратите внимание, что эта опция отключает индикатор прогресса.
В приведенном ниже примере
- Ваша рабочая станция называется MacBook-Pro.
- Dev Jump Box называется devjumpserver
- Сервер приложений Dev называется devapplicationserver
- Находится в локальной сети DNS зона с именем .local
- QA Jump Box называется qajumpserver
- Сервер приложений QA называется qaapplicationserver
- Находится в локальной сети DNZ зоны с именем .local
- Мы выполним тестовую копию файла 670GB / etc / hosts ;-)
- Предполагается, что у вас настроена аутентификация с открытым ключом SSH.
Вот файл ~ / .ssh / config, который устанавливает прямой доступ с вашей рабочей станции к серверам приложений через соответствующий переход (он же бастионный сервер).
MacBook-Pro: ~ barrychapman $ cat ~ / .ssh / config
Хост *
ServerAliveInterval 60
Хост devapplicationsever
HostName devapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@devjumpserver.example.com -W% h:% p
Пользователь barrychapman
Хост qaapplicationserver
HostName qaapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@qajumpserver.example.com -W% h:% p
Пользователь barrychapman
MacBook-Pro: ~ Барричапман $
Проверка наличия файла на целевом сервере, его там не будет.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
ls: не может получить доступ к / tmp / hosts: нет такого файла или каталога
Убит по сигналу 1.
MacBook-Pro: ~ Барричапман $
Теперь давайте скопируем файл с сервера приложений Dev в приложение QA через вашу рабочую станцию.
MacBook-Pro: ~ barrychapman $ scp -3 сервер удаленных приложений: / etc / hosts qaapplicationserver: / tmp /
Убит по сигналу 1.
Убит по сигналу 1.
MacBook-Pro: ~ Барричапман $
Теперь давайте проверим наличие скопированного файла на сервере приложений QA. Это будет там на этот раз.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
/ TMP / хостов
Убит по сигналу 1.
MacBook-Pro: ~ Барричапман $
Заметка
При закрытии соединения ProxyCommand вы увидите предупреждающее сообщение «Убит по сигналу 1». Это SSH разрывает соединение ProxyCommand и не о чем беспокоиться. Вы можете избавиться от этого, добавив LogLevel Quiet
в ваш раздел конфигурации хоста ваш бастион.