У нас есть две основные среды:
Разработка и QA
Каждая среда имеет два сервера:
- Jump Box
- Сервер приложений
Чтобы подключиться к серверу приложений, вы должны сначала подключиться к переключателю, а затем SSH к серверу приложений.
Есть несколько правил, любезно предоставленных брандмауэром:
- Вы ДОЛЖНЫ подключиться к серверу приложений через поле перехода
- Сервер приложений не может подключиться ни к одному из переключателей
- Коробки переходов находятся в одной подсети, и МОГУТ общаться друг с другом.
Наша проблема
У нас есть много контента (670 ГБ) DEVELOPMENT APPLICATION SERVER
, и мы должны передать это QA APPLICATION SERVER
.
Копирование этих данных в поля переходов не вариант, потому что им не хватает необходимого места.
Я провел некоторое исследование и узнал, что мы можем потенциально провести серию туннелей через эти серверы, чтобы мы могли передавать данные прямо с одного сервера приложений на другой через туннели. Однако проблема в том, что мы не можем подключиться к переходной коробке с сервера приложений.
У нас есть варианты? Это становится отчаянной ситуацией, и время имеет существенное значение. У нас нет времени на скачивание данных и их повторную загрузку. Копирование по сети на серверах будет происходить быстро, так как это гигабитное соединение.
источник
Ответы:
Безусловно, самый простой способ - просто скопировать его через scp. Кроме того, этот синтаксис на самом деле работает в отличие от некоторых других предложений.
Вы не можете победить этот синтаксис для простоты. Это позволяет вам рекурсивно копировать, rsync или все, что вам нужно, без необходимости рассматривать потенциально сложные каналы. Этот синтаксис интуитивно понятен, его будут более легко поддерживать администраторы Sys, которые следуют за вами, и не используют бесполезно cat .
Со страницы руководства scp :
-3
Копии между двумя удаленными хостами передаются через локальный хост. Без этой опции данные копируются непосредственно между двумя удаленными хостами. Обратите внимание, что эта опция отключает индикатор прогресса.В приведенном ниже примере
Вот файл ~ / .ssh / config, который устанавливает прямой доступ с вашей рабочей станции к серверам приложений через соответствующий переход (он же бастионный сервер).
Проверка наличия файла на целевом сервере, его там не будет.
Теперь давайте скопируем файл с сервера приложений Dev в приложение QA через вашу рабочую станцию.
Теперь давайте проверим наличие скопированного файла на сервере приложений QA. Это будет там на этот раз.
Заметка
При закрытии соединения ProxyCommand вы увидите предупреждающее сообщение «Убит по сигналу 1». Это SSH разрывает соединение ProxyCommand и не о чем беспокоиться. Вы можете избавиться от этого, добавив
LogLevel Quiet
в ваш раздел конфигурации хоста ваш бастион.источник
ТРУБЫ!
Если Интернет представляет собой серию каналов, Unix - это серия каналов - что-то вроде:
должно сработать.
Если вам нужно пройти больше хостов, добавьте больше каналов (и больше вложенных слоев
\
цитаты -escaped) по мере необходимости. (Тем не менее, обратите внимание, что если конвейер / побег становится настолько сложным, что вам нужно нарисовать диаграмму или прибегнуть к подсчету пальцев, чтобы определить, сколько раз вам нужно удвоиться на побегах , возможно, пришло время признать поражение и настроить подходящий VPN !)источник
tar
вокруг. (Кроме того, в вас не нужноcat
на промежуточных этапах трубопровода -ssh
это с удовольствием едят и реле стандартного ввода НЕГО.cat
Просто заставляет меня чувствовать себя лучше и является заполнителем для других полезных команд , которые вы можете использовать, какtee
.)VPN! NOW!
на них ...user@host1
) в какой-то момент будет иметь полноеcat ginormous-file
хранилище в любой точке? Или данные просто отправляются напрямуюuser@host2
? Или это как-то потекло? Насколько этоtar
актуально? Я думаю, это относится ко второму и последнему вопросу, который я задал. Ни один из этих вопросов не является риторическим, кстати ...Если я правильно понимаю, у вас есть два сервера переходов (jump-qa и jump-dev), защищающие два сервера приложений (app-qa и app-dev); серверы перехода могут соединяться друг с другом по ssh; никакое поле, кроме соответствующего сервера перехода, не может подключиться к соответствующему серверу приложений. Серверы приложений могут SSH к никто. Файл должен быть перенесен из app-dev в app-qa. На обоих серверах прыжков не хватает места для промежуточной копии данных.
Вы можете решить это с помощью SSH туннелирования. Мы установили соединение с одним удаленным сервером приложений, который переносит удаленный туннель, который подключается к неиспользуемому порту на его сервере переходов. Мы установили второе соединение с одного сервера переадресации на другой сервер переадресации, в котором имеется туннель, который отбирает висячий конец удаленно перенаправленного порта из туннеля один и отправляет его на порт ssh другого сервера приложений.
Настройте туннели (каждую из этих команд нужно будет запустить в отдельном окне
jump-qa
):Теперь вы должны найти, что в app-qa вы можете сделать это
telnet localhost 2345
и получить ssh-баннер app-dev. Затем вы можете скопировать файл данных:источник