Chcę pobierać pliki z komputera biurowego na laptopa.
Mogę połączyć mój komputer biurowy przez SSH z serwerem organizacji, a następnie SSH z serwera do mojego komputera biurowego.
Jedynymi poleceniami, które serwer organizacji akceptuje, są ssh, ssh1 i ssh2.
Jak mogę pobrać plik z mojego komputera (zdalnego) przez serwer na mój laptop (lokalny)?
Odpowiedzi:
Poprzednie odpowiedzi wspominają, jak korzystać z dyrektywy ProxyJump (dodanej w OpenSSH 7.3) do łączenia się przez serwer pośredni (zwykle nazywany hostem bastionu), ale wspominają o tym tylko jako argumentie wiersza poleceń.
Jeśli nie jest to maszyna, z którą nie będziesz się w przyszłości podłączać, najlepszą rzeczą jest skonfigurowanie jej
~/.ssh/config
.Umieściłbym plik taki jak:
Jeśli używasz wcześniejszej wersji OpenSSH, która nie obsługuje ProxyJump, zastąpisz ją odpowiednikiem:
a jeśli Twoja lokalna wersja ssh była naprawdę starą wersją, która nie obsługiwała
-W
:chociaż ten ostatni wymaga
nc
zainstalowania maszyny bastionowej .Zaletą ssh jest to, że możesz skonfigurować każde miejsce docelowe w pliku i będą się ładnie układać. W ten sposób skończysz
office-machine
jako nazwa hosta dla wszystkich narzędzi (ssh, scp, sftp ...), ponieważ były to bezpośrednie połączenia, a oni dowiedzą się, jak się połączyć w oparciu o ssh_config. Możesz takżeHost *.internal.company.local
użyć symboli wieloznacznych, które sprawią, że wszystkie hosty kończące się w ten sposób przejdą przez określony bastion, i będzie to dotyczyć wszystkich z nich. Po prawidłowym skonfigurowaniu jedyną różnicą między wykonaniem jednego przeskoku lub dwudziestu byłoby wolniejsze czasy połączenia.źródło
Jeśli masz najnowszą wersję OpenSSH (8.0), możesz użyć przełącznika
-J
(skok) :W starszych wersjach (ale co najmniej 7.3) możesz użyć
ProxyJump
dyrektywy w wierszu poleceń:lub w
ssh_config
pliku, jak pokazuje odpowiedź @ Ángel.Istnieją inne opcje, takie jak
ProxyCommand
przekierowanie portów, z których można korzystać nawet w starszych wersjach OpenSSH. Są one omówione w artykule Czy OpenSSH obsługuje logowanie do wielu sklepów?źródło
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
nie obsługuje-J
, może być wystarczająco nowy, aby obsługiwać tęProxyJump
opcję; wypróbuj jedną z pozostałych odpowiedzi, które wyraźnie korzystają z tej opcji.ssh
pytania, które sugerują modyfikację twojegoconfig
dla konkretnych hostów, gdy wystarczy prosta opcja wiersza poleceń, aby wykonać zadanie.-J user@intermediate
każdym razem, gdy muszę się połączyć.Czasami możemy po prostu użyć potoku. Ten czas jest dzisiaj.
Możesz również przesłać
Tak, istnieją inne rozwiązania obejmujące proxy, itp., Ale wiedza, jak to zrobić, jest przydatna.
źródło
cat
!Użyj
ProxyJump
konfiguracji:źródło
Istnieje starożytny protokół o nazwie ZMODEM : obecnie niewiele programów go obsługuje, ale gdy działa, może być całkiem wygodny.
Najpierw sprawdź, czy program terminala twojego laptopa obsługuje ZMODEM. (Na przykład możesz skonfigurować iTerm2 (na Macu) do obsługi ZMODEM. Przykładowy skrypt jest dostępny tutaj .)
Na komputerze biurowym uruchom:
sudo apt install lrzsz
Teraz wszystko, co musisz zrobić, to ssh na komputer biurowy i uruchomić
sz (filename)
. Plik zostanie pobrany za pośrednictwem twojego terminala.źródło
Konfiguracja pod ssh użytkownika:
~/.ssh/config
Możesz teraz skopiować z serwera intranetowego bezpośrednio na serwer 3 skoków.
scp [email protected]:/home/user/ ./*
Preferuję to, ponieważ nie trzeba już określać serwerów skoku za pomocą scp
źródło
Przez SCP -3:
źródło
-3
Rozwiązaniem jest opisany jako „kopii między dwoma oddalonymi gospodarzy są przesyłane do lokalnego komputera”. podczas gdy uważam, że to pytanie stanowi, że lokalny host nie może uzyskać dostępu do „remote2”.-3
. Zakłada się jednak, że można połączyć się ze środkowej maszyny z powrotem do pierwszej.-J
/JumpHost
. Wręcz przeciwnie, ponieważ ma ograniczenia, o których wspomina @Joe.