SSH to bezpieczny protokół sieciowy umożliwiający dostęp do zdalnych komputerów w sieci.
Komputery komunikują się ze sobą za pośrednictwem sieci. W związku z tym badacze sieci zdefiniowali zestaw reguł komunikacji z innymi maszynami i rozpoczęli opracowywanie protokołów, takich jak Telnet; za jego pomocą jeden użytkownik może przejąć kontrolę nad innym komputerem.
Nie są one jednak bezpieczne, tzn. każdy w środku sieci może przechwycić i odczytać przesyłane dane. W połowie lat 90. wprowadzono bardziej bezpieczny protokół o nazwie ssh jako niezawodny następca protokołu telnet.
Jeśli jesteś programistą lub administratorem systemu pracującym w branży, być może przynajmniej raz użyłeś ssh. Jeśli nie, nauczmy się tego teraz, ponieważ jest to jedna z podstawowych umiejętności, które musisz znać.
Spis treści:
Co to jest SSH?
SSH lub Secure Shell lub Secure Socket Shell to protokół sieciowy, który pomaga nam bezpiecznie uzyskiwać dostęp i komunikować się ze zdalnymi maszynami (głównie zdalnymi serwerami).
Zapewnia silne szyfrowanie i jest szeroko stosowany przez administratorów sieci i programistów do zarządzania zdalnymi systemami i aplikacjami, wykonywania poleceń, udostępniania plików itp.
Potrzeba SSH
SSH został stworzony w 1995 roku w celu rozwiązania problemów bezpieczeństwa, z którymi borykają się niezabezpieczone protokoły zdalnego dostępu, takie jak rlogin, rsh, Telnet.
Porozmawiajmy teraz o Telnet, co oznacza Teletype Network, opracowaną w 1969 roku. Jest to proste narzędzie wiersza poleceń, które działa na twoim komputerze, aby uzyskać dostęp do zdalnego serwera (w dowolnym miejscu na świecie). I wysyłaj polecenia do wykonania na tym serwerze, tak jakbyś siedział tuż przed zdalnym serwerem (nawet mile od serwera). Telnet przesyła i odbiera wiadomości w postaci zwykłego tekstu przez sieć.
Polecenia, które można wykonać, mogą dotyczyć uruchamiania programów, tworzenia katalogów, tworzenia/usuwania/przesyłania plików, uruchamiania/zatrzymywania usług itp.
Problem z podłączeniem innej maszyny do sieci polega na tym, że przesyłane dane będą przechodzić przez wiele sieci. W międzyczasie niektóre z nich mogą być niepewne, a przesyłane dane mogą zostać przechwycone i ewentualnie zmodyfikowane, zanim dotrą do zamierzonej maszyny docelowej.
Na początku, gdy bezpieczeństwo nie było tak ważne, cała komunikacja odbywała się zwykłym tekstem. W związku z tym dane przesyłane przez Internet między klientem a serwerem można łatwo przechwycić. I można to odczytać, ponieważ wiadomości nie są szyfrowane.
Dlatego protokoły zwykłego tekstu są bardzo niepewne i nigdy nie mogą być używane do przesyłania poufnych danych, takich jak hasła, tajemnice itp. Dlatego SSH jest uważany za bezpieczną alternatywę dla starszych protokołów sieciowych zdalnego dostępu.
Jak to działa?
SSH wykorzystuje architekturę klient-serwer do bezpiecznej komunikacji w sieci poprzez połączenie klienta ssh z serwerem ssh. Domyślnie serwer ssh nasłuchuje na standardowym porcie TCP 22 (można to zmienić dla lepszego bezpieczeństwa).
Wykorzystuje technikę kryptografii klucza publicznego do uwierzytelniania między klientem a serwerem. Ponadto protokół wykorzystuje silne szyfrowanie symetryczne i algorytmy mieszające do wymiany wiadomości między klientem a serwerem w celu zapewnienia prywatności i integralności danych.
Linux jest szeroko stosowanym systemem operacyjnym dla zdalnych serwerów ze względu na jego bezpieczeństwo i trwałość. Wiele serwerów korzystających z systemu operacyjnego Linux w Internecie działa od lat bez wielu awarii lub nawet restartów.
Większość sesji SSH (okres, w którym uzyskujemy dostęp do zdalnego serwera) będzie miała tylko dwie następujące operacje:
- Uwierzytelnianie
- Wykonanie polecenia
Serwery SSH mogą uwierzytelniać klientów przy użyciu różnych metod.
A dwa popularne sposoby to:
Uwierzytelnianie oparte na haśle jest domyślną metodą używaną do uwierzytelniania dla OpenSSH zainstalowanych klientów. Jest to najbardziej podstawowe uwierzytelnianie ssh, ale nie najbezpieczniejsze.
Mimo że hasła są przesyłane do serwera w sposób bezpieczny, nowoczesne ataki typu brute force mogą obejść uwierzytelnianie.
Uwierzytelnianie oparte na kluczach jeszcze bardziej poprawia bezpieczeństwo systemu poprzez generowanie par kluczy SSH, co okazuje się niezawodną i bezpieczną alternatywą.
Po pomyślnym uwierzytelnieniu klienta przez serwer ustanawiane jest między nimi bezpieczne połączenie.
Dostęp do serwera zdalnego za pomocą SSH
Jeśli jesteś użytkownikiem systemu Mac/Linux, możesz bezpośrednio używać terminala do wpisywania i uruchamiania poleceń ssh, ponieważ OpenSSH jest już domyślnie zainstalowany.
Jeśli jesteś użytkownikiem systemu Windows, musisz zainstalować jednego klienta emulatora terminala innej firmy, aby uruchamiać polecenia ssh. Kit jest najpopularniejszym klientem ssh dla systemu operacyjnego Windows.
Aby połączyć się ze zdalnym serwerem za pomocą SSH, musisz wiedzieć co najmniej dwie rzeczy.
Składnia podstawowego polecenia ssh to:
$ ssh <user-name> @ <host> -p <port-no>
Nazwa użytkownika to nazwa użytkownika zdalnej maszyny, z którą próbujemy się połączyć (a nie użytkownika na komputerze lokalnym), a host to adres IP lub nazwa domeny.
Spójrzmy na przykład łączenia się ze zdalnym serwerem za pomocą OverTheWire stronie internetowej. To darmowa strona z wyzwaniami gier wojennych.
Teraz połączmy się z bandyta wyzwanie za pomocą ssh. Jest to jedno z dostępnych wyzwań na stronie, które uczy logowania przez SSH.
Kwalifikacje:
nazwa użytkownika i hasło: bandit0
host i port: bandit.labs.overthewire.org, 2220
Po wpisaniu następującego polecenia i naciśnięciu klawisza Enter:
$ ssh [email protected] -p 2220
Zostaniesz poproszony o podanie hasła w celu uwierzytelnienia. Teraz wpisz hasło i naciśnij enter:
Jeśli wpisane hasło jest poprawne, pomyślnie zalogowałeś się na zdalny serwer, a twój terminal będzie wyglądał jak na powyższym obrazku.
Teraz możesz używać terminala zdalnej maszyny do wpisywania i wykonywania poleceń oraz wykonywania niezbędnych operacji.
Jeśli chcesz zakończyć sesję ssh, wpisz polecenie wyjścia:
$ exit
Po pomyślnym wylogowaniu się z sesji ssh pojawi się komunikat „Połączenie zamknięte”.
Wniosek
Głównym powodem popularności SSH jest to, że cała komunikacja między serwerem a klientem jest szyfrowana.
Większość ludzi zakłada, że używanie ssh jest skomplikowane, a zdobywanie wiedzy o tym, jak to działa, nie jest łatwe do zrozumienia, ale jest prostsze niż myślisz. Teraz masz podstawową wiedzę na temat SSH, sposobu jego działania, aspektów bezpieczeństwa, które się za nim kryją i dlaczego odgrywa on istotną rolę w komunikacji.
Następnie zapoznaj się z niektórymi zasobami, aby zostać administratorem systemu.