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 .
scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to
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
- Twoja stacja robocza nazywa się MacBook-Pro.
- Dev Jump Box nosi nazwę devjumpserver
- Serwer aplikacji deweloperskich nosi nazwę devapplicationserver
- Znajduje się w strefie DNS LAN o nazwie .local
- QA Jump Box nosi nazwę qajumpserver
- Serwer aplikacji QA nosi nazwę qaapplicationserver
- Znajduje się w strefie LAN DNZ o nazwie .local
- Wykonamy kopię testową pliku 670 GB / etc / hosts ;-)
- Przyjmuje się, że masz skonfigurowane uwierzytelnianie klucza publicznego SSH.
Oto plik ~ / .ssh / config, który konfiguruje bezpośredni dostęp ze stacji roboczej do serwerów aplikacji poprzez odpowiedni skok (inaczej serwer bastionowy).
MacBook-Pro: ~ barrychapman $ cat ~ / .ssh / config
Gospodarz *
ServerAliveInterval 60
Host devapplicationsever
HostName devapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@devjumpserver.example.com -W% h:% p
Użytkownik barrychapman
Host qaapplicationserver
HostName qaapplicationserver.local
ProxyCommand ssh -i ~ / .ssh / id_rsa barrychapman@qajumpserver.example.com -W% h:% p
Użytkownik barrychapman
MacBook-Pro: ~ barrychapman $
Testowanie obecności pliku na serwerze docelowym, nie będzie go tam.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
ls: nie można uzyskać dostępu do / tmp / hosts: brak takiego pliku lub katalogu
Zabity sygnałem 1.
MacBook-Pro: ~ barrychapman $
Teraz skopiujmy plik z serwera aplikacji Dev do aplikacji QA za pośrednictwem stacji roboczej.
MacBook-Pro: ~ barrychapman $ scp -3 devapplicationserver: / etc / hosts qaapplicationserver: / tmp /
Zabity sygnałem 1.
Zabity sygnałem 1.
MacBook-Pro: ~ barrychapman $
Teraz sprawdźmy obecność skopiowanego pliku na serwerze aplikacji QA. Tym razem będzie tam.
MacBook-Pro: ~ barrychapman $ ssh qaapplicationserver ls / tmp / hosts
/ tmp / hosts
Zabity sygnałem 1.
MacBook-Pro: ~ barrychapman $
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.