Rina Adriana
Rina AdrianaWeb Engineer @ Knowit

Moc tunelowania SSH - jak może ułatwić życie dewelopera?

Poznaj zastosowania tunelowania serwera SSH, które usprawnią Twoją pracę programistyczną.
5.06.20193 min
Moc tunelowania SSH - jak może ułatwić życie dewelopera?

Pewnie niejednokrotnie korzystałeś z SSH, czy chodziło o klonowanie repozytorium gita, czy o połączenie ze zdalnym serwerem. Tak czy inaczej, oba wykorzystują SSH na poziomie podstawowym.

Jednak oprócz pobierania repozytorium gita lub łączenia się z serwerem, SSH ma kilka innych zastosowań, które mogą usprawnić pracę programistyczną. Jednym z nich jest tunelowanie SSH, znane również jako lokalne lub zdalne przekierowanie portów. Opiszę, czym jest i jaka jest różnica między lokalnym a zdalnym przekierowaniem portów.

Podstawowy SSH

SSH oznacza Secure Shell i jest protokołem służącym do tworzenia bezpiecznego połączenia ze zdalnym serwerem. Aby utworzyć połączenie SSH, po prostu wpisz takie polecenie w swoim terminalu:

ssh [email protected]


user to nazwa użytkownika na Twoim serwerze, a remote-server.com, to nazwa hosta wskazująca na niego, ale możesz także użyć adresu IP serwera, jeśli nie posiadasz żadnej nazwy domeny. Po wprowadzeniu hasła zostaniesz połączony ze zdalnym serwerem za pomocą bezpiecznego połączenia.

Lokalne przekierowanie portów

Jak wcześniej wspomniałem, istnieją dwa sposoby ustanowienia tunelu SSH. Pierwszy to lokalne przekierowanie portów. Mówiąc wprost - lokalne przekierowanie portów pozwala na przekazanie lokalnego numeru portu zdalnemu serwerowi. Ale czemu miałbyś to zrobić? Wyobraź sobie, że siedzisz w sieci i chcesz połączyć się z domeną, która jest zablokowana w tej sieci. Aby to ominąć, możesz połączyć się z domeną za pomocą serwera, jak chociażby serwer spoza sieci, na której siedzisz, bez żadnych ograniczeń.

W takich wypadkach przekazywanie portów lokalnych jest przydatne. Po prostu utwórz połączenie SSH ze zdalnym serwerem, tak jak w poprzednim przykładzie, ale tym razem musisz dodać flagę, która mówi programowi SSH, aby przekazał konkretną nazwę hosta i port:

ssh -L 8000:restricted-domain.com:80 [email protected]


Składnia:

ssh -L <LocalPort>:<RemoteHost>:<RemotePort> user@<RemoteServer>


To polecenie każe programowi przekazać wszystkie żądania dla localhost:8000 do restricted-domain.com:80 poprzez remote-server.com.

Oczywiście jest to jeden z wielu przypadków użycia lokalnego przekierowania portów. Bardziej znanym programistom przypadkiem użycia jest na przykład połączenie ze zdalną bazą danych, która zezwala tylko na połączenie z serwera w tej samej sieci. Przy pomocy SSH można utworzyć połączenie z bazą danych za pośrednictwem innego serwera, który znajduje się w tej samej sieci, co baza danych.

Zdalne przekierowanie portów

Zdalne przekierowanie portów jest przeciwieństwem lokalnego. Przekaże wszystkie żądania na port zdalnych serwerów do Twojego komputera. Jest to bardzo przydatne, gdy potrzebujesz dać dostęp komuś lub jakiejś usłudze do Twojego lokalnego hosta, bez konieczności udostępniania lub ujawniania swojego adresu IP.

Zazwyczaj usługi oparte na chmurze (np. Chatboty) wymagają działającej aplikacji serwerowej i podania adresu URL, aby również mógł się połączyć. To sprawia, że ​​tworzenie i debugowanie stanowi wyzwanie, ponieważ będziesz musiał wgrać nową wersję kodu aplikacji za każdym razem, gdy chcesz go przetestować. Dzięki zdalnemu przekazywaniu portów, można po prostu skonfigurować serwer w chmurze lub w VPS i przekazać połączenie do lokalnego komputera. W ten sposób możesz stale kodować i równolegle testować chatbota.

ssh -R 8000:localhost:3000 [email protected]


Składnia:

ssh -R <RemotePort>:<LocalHost>:<LocalPort> user@<RemoteServer>


(Zwróć uwagę na dwa różne argumenty, -L i -R na polecenia SSH.)

To polecenie przekaże wszystkie żądania do remote-server.com:8000 Twojemu lokalnemu hostowi. Zdalne przekierowywanie portów działa w taki sam sposób jak Ngrok i właściwie ma potencjał na zastąpienie tej usługi.

Podsumowanie

Tunelowanie SSH jest potężnym narzędziem, które usprawnia pracę programistów. Jest szczególnie przydatny podczas pracy z usługami w chmurze, takimi jak zdalna baza danych lub chatbot.

<p>Loading...</p>