Mamy dwa główne środowiska, o których mowa:
Rozwój i kontrola jakości
Każde środowisko ma dwa serwery:
- Jump Box
- Serwer aplikacji
Aby połączyć się z serwerem aplikacji, musisz najpierw połączyć się z polem skoku, a następnie SSH z serwerem aplikacji.
Dzięki zaporze firewall obowiązuje kilka zasad:
- MUSISZ połączyć się z serwerem aplikacji za pomocą pola skoku
- Serwer aplikacji nie może połączyć się z żadnym z pól skoku
- Skocznie znajdują się w tej samej podsieci i MOGĄ ze sobą rozmawiać.
Nasz problem
Mamy dużo treści (670 GB) na DEVELOPMENT APPLICATION SERVER
i musimy to zrobić QA APPLICATION SERVER
.
Kopiowanie tych danych do pól skoku nie jest opcją, ponieważ brakuje im wymaganej ilości miejsca.
Przeprowadziłem badania i dowiedziałem się, że możemy potencjalnie wykonać szereg tuneli przez te serwery, abyśmy mogli przesyłać dane bezpośrednio z jednego serwera aplikacji do drugiego za pośrednictwem tuneli. Jednak problem polegający na tym, że nie możemy połączyć się ze skoczkiem z serwera aplikacji.
Czy mamy jakieś opcje? To staje się rozpaczliwa sytuacja, a czas jest najważniejszy. Nie mamy czasu na pobranie danych i ponowne przesłanie. Kopiowanie w sieci na serwerach przebiegnie szybko, ponieważ jest to połączenie gigabitowe.
źródło
Odpowiedzi:
Zdecydowanie najprostszym sposobem jest po prostu skopiowanie go za pomocą scp. Ponadto ta składnia faktycznie działa inaczej niż niektóre inne sugestie.
Nie możesz łatwo pokonać tej składni. Pozwala na rekurencyjne kopiowanie, rsync lub cokolwiek zechcesz bez konieczności rozważania potencjalnie skomplikowanych potoków. Ta składnia jest intuicyjnie przejrzysta, łatwiej będzie ją wspierać administratorzy Sys, którzy podążają za tobą i nie będą bezużyteczne korzystanie z cat .
Ze strony podręcznika scp :
-3
Kopie między dwoma hostami zdalnymi są przesyłane przez hosta lokalnego. Bez tej opcji dane są kopiowane bezpośrednio między dwoma zdalnymi hostami. Pamiętaj, że ta opcja wyłącza miernik postępu.W poniższym przykładzie
Oto plik ~ / .ssh / config, który konfiguruje bezpośredni dostęp ze stacji roboczej do serwerów aplikacji poprzez odpowiedni skok (inaczej serwer bastionowy).
Testowanie obecności pliku na serwerze docelowym, nie będzie go tam.
Teraz skopiujmy plik z serwera aplikacji Dev do aplikacji QA za pośrednictwem stacji roboczej.
Teraz sprawdźmy obecność skopiowanego pliku na serwerze aplikacji QA. Tym razem będzie tam.
Uwaga
Podczas zamykania połączenia ProxyCommand zobaczysz komunikat ostrzegawczy „Zabity sygnałem 1”. To SSH rozbija połączenie ProxyCommand i nie ma się czym martwić. Możesz się go pozbyć, dodając
LogLevel Quiet
do sekcji konfiguracji hosta bastionu.źródło
RURY!
Jeśli internet to seria rur , Unix to seria rur - coś w stylu:
powinno działać.
Jeśli chcesz przejść przez większą liczbę hostów, dodaj więcej potoków (i więcej zagnieżdżonych warstw
\
cytatu z wycięciem) w razie potrzeby. (Zauważ jednak, że jeśli rurociąg / ucieczka staje się tak skomplikowana, że musisz narysować schemat lub uciekać się do liczenia na palcach, aby określić, ile razy musisz podwoić liczbę ucieczek , prawdopodobnie czas przyznać się do porażki i skonfigurować odpowiednią sieć VPN !)źródło
tar
. (Również w nie potrzebującat
w pośrednich etapach rurociągu -ssh
chętnie jedzą stdin i przekazywać je.cat
Po prostu sprawia, że czuję się lepiej i jest symbolem zastępczym dla innych przydatnych poleceń może chcesz używać, jaktee
.)VPN! NOW!
na nich ...user@host1
) w którymś momencie będzie miał zapełnionecat ginormous-file
miejsce w dowolnym momencie? A może dane są wysyłane bezpośrednio douser@host2
? Czy jest to jakoś przesyłane strumieniowo? Jak to matar
znaczenie? Wydaje mi się, że ma to związek z drugim pytaniem, które zadałem. Żadne z tych pytań nie jest retoryczne ...Jeśli dobrze rozumiem, masz dwa serwery skoku (jump-qa i jump-dev) chroniące dwa serwery aplikacji (app-qa i app-dev); serwery skoku mogą ssh do siebie; żadne inne pole niż odpowiedni serwer skoku nie może ssh do odpowiedniego serwera aplikacji. Serwery aplikacji mogą ssh do nikogo. Plik należy przenieść z app-dev do app-qa. Oba serwery skoku nie mają miejsca na tymczasową kopię danych.
Możesz to rozwiązać za pomocą tunelowania ssh. Nawiązaliśmy połączenie z jednym zdalnym serwerem aplikacji, przenosząc zdalny tunel, który łączy się z nieużywanym portem na swoim serwerze skoku. Nawiązujemy drugie połączenie z jednego serwera skoków do drugiego serwera skoków, niosąc tunel, który podnosi zwisający koniec zdalnie przekazywanego portu z tunelu pierwszego i wysyła go do portu ssh drugiego serwera aplikacji.
Skonfiguruj tunele (każde z tych poleceń będzie musiało być uruchomione w osobnym oknie
jump-qa
):Powinieneś teraz znaleźć to na app-qa, możesz zrobić
telnet localhost 2345
i pobrać banner ssh app-dev. Następnie możesz skopiować plik danych:źródło