Instalacja i konfiguracja SSH w Linux

Instalacja i konfiguracja SSH w Linux

W dzisiejszym materiale poznamy jeden z najważniejszych programów służący do połączeń zdalnych. Dzięki odpowiedniej konfiguracji korzystanie z tego narzędzia pozwoli bezpiecznie łączyć się z innymi urządzeniami. Możesz z niego korzystać również w trakcie swojej nauki. Stworzyłeś maszynę wirtualną z zainstalowanym serwerem? Jeżeli ją uruchomisz i będziesz chciał w ten sposób pracować, to w pewnym sensie ograniczysz się do możliwości wprowadzenia komend. W przypadku skorzystania z SSH będziesz mógł zarówno wklejać zawartość, jak i kopiować wyniki. Choć pierwsza możliwość przy nauce nie należy do bardzo pożytecznych, jednak druga przydaje się bardzo w prowadzeniu notatek. Zobacz jak powinna wyglądać instalacja i konfiguracja SSH w Linuxie.

 

Ostatni webinar w tym roku!

Zapraszamy na bezpłatny webinar poświęcony roli sztucznej inteligencji w zarządzaniu infrastrukturą IT, zarówno w dużych serwerowniach, jak i w środowiskach homelab.

W trakcie wydarzenia dowiesz się, jak AI może wspierać codzienną pracę administratora, pomagając w automatyzacji procesów, monitorowaniu zasobów, analizie danych oraz zwiększaniu efektywności operacyjnej.

Zapisy na: https://asdevops.pl/warsztaty/

 

Co to jest SSH?

Secure Shell jest to protokół sieciowy, z którego korzysta każdy administrator. Jest używany do bezpiecznej komunikacji pomiędzy dwoma urządzeniami sieciowymi. Wyparł on takie protokoły jak Telnet i FTP, które nie zapewniały ani nie zapewniają żadnego szyfrowania, jak i bezpiecznej komunikacji. Dlatego już od wielu lat oba są niezalecane do powszechnego użytku. Może się wydawać, że SSH jest dość nowym narzędziem, jednak tak naprawdę został opracowany w latach 90 poprzedniego wieku. Od wielu lat zaleca się korzystanie z niego, jeżeli chcemy bezpiecznie łączyć się zdalnie.

SSH działa na zasadzie klient-serwer. Pierwszy, czyli klient jest instalowany na urządzeniu użytkownika. Drugi na urządzeniu, z którym chcemy nawiązać połączenie. Jedynie wykorzystanie dwóch wymienionych umożliwia nawiązanie bezpiecznego połączenia. SSH do tego celu używa kombinacji kryptograficznych. Nawet w niezabezpieczonej sieci tworzy bezpieczny kanał, przez który przechodzą wszystkie dane. Zabezpiecza dane znajdujące się w tym kanale przed nieautoryzowanym dostępem czy też ich modyfikacją.

Dzięki takiemu połączeniu jesteśmy w stanie wywoływać polecenia tak, jakbyśmy bezpośrednio robili to na serwerze. Dlatego jest on szczególnie wykorzystywany przez administratorów, ale nie tylko. W obecnej chwili wszyscy którzy potrzebują nawiązać bezpieczne połączenie z innym urządzeniem z niego korzystają.

Instalacja i konfiguracja SSH

W większości, jeżeli nie wszystkich dystrybucjach Linux, SSH jest zainstalowane automatycznie. Jednak jeżeli w twoim wypadku jest inaczej to, aby zainstalować usługę, musimy skorzystać z polecenia:

W dystrybucjach opartych o Debiana:

sudo apt install ssh

W dystrybucjach opartych o Red Hat Enterprise Linux:

sudo yum install ssh

lub

sudo dnf install ssh

Sprawdzamy teraz, czy usługa uruchomiła się automatycznie:

sudo systemctl status ssh
ssh.service - OpenBSD Secure Shell server
Active: active (running)

Niepotrzebny kod z przykładu usunąłem. W przypadku gdy nie masz uruchomionej usługi, powinieneś to zrobić w następujący sposób:

sudo systemctl start ssh

lub

sudo systemctl enable ssh

Logowanie do hosta

Po zainstalowaniu SSH w twoim systemie możesz używać go do zdalnego dostępu, przez co możesz zarządzać innym urządzeniem. Jednak nim wszystkie te możliwości będą dostępne, musisz zalogować się do hosta. Do tego celu korzystamy z polecenia:

ssh nazwa-użytkownika@nazwa-hosta

Polecenie wygląda tak, jakbyś wpisywał adres e-mail. Aby zalogować się do serwera, czy też systemu zdalnie potrzebujesz znać nazwę użytkownika oraz hasło do konta tego użytkownika. Dlatego adekwatnie do opisu zmieniasz dane w poleceniu. W następnym kroku zostaniesz poproszony o hasło do konta, na które chcesz się zalogować. Po wprowadzeniu poprawnie danych nastąpi połączenie.

Po połączeniu będziesz w stanie wykonać wszystkie dostępne polecenia w zależności od systemu, do którego się zalogowałeś. SSH nie uruchamia GUI, dlatego automatycznie zostaniesz przeniesiony do wiersza poleceń.

Logowanie na lokalne konto

SSH umożliwia również logowanie na konto użytkownika znajdujące się na naszej lokalnej maszynie. W miejscu nazwa hosta wprowadzasz localhost i oczywiście podajesz nazwę użytkownika. Wszystkie pozostałe czynności wykonujesz w identyczny sposób, jak prezentowałem to w poprzednim przykładzie.

ssh nazwa-użytkownika@localhost

Generowanie kluczy SSH

W celu bezpieczniejszego logowania na serwer, zamiast samego hasła należy posługiwać się i korzystać z kluczy SSH. Takie klucze jesteśmy w stanie wygenerować w każdym systemie. Używam liczby mnogiej, ponieważ jest ich dokładnie dwa. Pierwszy z nich jest to klucz publiczny, który przechowywany jest na serwerze zdalnym. Czyli w miejscu, z którym chcemy się połączyć. Natomiast klucz prywatny znajduje się w systemie lokalnym. Czyli tym, który będzie łączył się z serwerem. W tym przypadku, gdy łączysz się ze zdalnym serwerem, on porównuje oba i jeżeli się zgadzają, uwierzytelnia i szyfruje połączenie pomiędzy serwerem, a Tobą. W innym wypadku blokuje możliwość zalogowania.

Aby wygenerować pary kluczy w systemie Linux powinieneś skorzystać z polecenia w następujący sposób:

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/darki/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/darki/.ssh/id_rsa
Your public key has been saved in /home/darki/.ssh/id_rsa.pub
The key fingerprint is:
…

Czynności, jakie zostały wykonane, wymagają opisu, ponieważ najczęściej, jeżeli się pojawia jakiś problem z kluczami to jest on związany z ich generowaniem. Dlatego poniżej krok po kroku analizuję to, co otrzymaliśmy jako wynik.

Po wprowadzeniu polecenia zostaniemy zapytani o miejsce, w którym mają zostać zapisane nasze klucze. Standardową lokalizacją i nazwą plików / kluczy jest:

/home/nazwa-użytkownika/.ssh/id_rsa

Jeżeli w tym miejscu wprowadzisz tylko nazwę, bez podania ścieżki bezwzględnej, to pliki zostaną zapisane pod wskazaną nazwą, ale w katalogu domowym konta. W moim przypadku, gdybym wprowadził nazwę pliku, klucze znalazły się w katalogu:

/home/darki/nazwa
/home/darki/nazwa.pub

Natomiast jeżeli nie wprowadziłeś nazwy i nie podałeś ścieżki bezwzględnej, to klucze znajdują się we wskazanym katalogu pod nazwą id_rsa i id_rsa.pub.

W następnym kroku jesteśmy pytani, czy chcemy utworzyć frazę zabezpieczającą. Chyba nie muszę uświadamiać nikogo, jak bardzo ważna jest ta fraza. Jest ona dodatkowym zabezpieczeniem, dlatego osobiście uważam, że zawsze musi być stworzona. Powinna być również odpowiednio trudna do złamania, dlatego musi zawierać kombinację dużych i małych liter, znaków oraz liczb.

W następnej fazie zostaniemy porposzeni o ponownie wprowadzenia hasła. Na końcu zostaną utworzone klucze SSH.

Dodawanie klucza publicznego do serwera zdalnego

Posiadamy już wygenerowane klucze SSH. Teraz publiczny należy dodać do serwera, z którym chcemy nawiązywać połączenia zdalne. W ten sposób będziemy uwierzytelniali nasze połączenie i szyfrowali przesyłanie danych pomiędzy naszym komputerem lokalnym a serwerem.

W celu skopiowania klucza do serwera powinniśmy skorzystać z polecenia:

ssh-copy-id -i /home/darki/.ssh/id_rsa.pub osboxes@192.168.0.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/darki/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
osboxes@192.168.0.10's password:

Na początku podajemy ścieżkę bezwzględną, gdzie został zapisany nasz klucz publiczny. Następnie podajemy nazwę konta i adres IP systemu, z którym łączyć się będziemy zdalnie.

Po wprowadzeniu hasła do konta użytkownika powinniśmy otrzymać informację:

Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'osboxes@192.168.0.10'"
and check to make sure that only the key(s) you wanted were added.

Zgodnie z podpowiedzią w celu zalogowania się korzystamy z poznanego wcześniej polecenia:

ssh osboxes@192.168.0.10

Zostaniemy poproszeni o hasło, ale tym razem podajemy hasło stworzone przy generowaniu kluczy.

Kopiowanie plików z i do serwera

Do kopiowania plików z i do serwera służy polecenie scp. Jest ono banalnie proste, dlatego bez zbędnego opisu przejdźmy do przykładu:

Składnia polecenia do pobrania pliku ze zdalnego serwera:

scp nazwa-użytkownika@nazwa-hosta:ścieżka-do-pliku-zdalnego nazwa-pliku-lokalnego

Składnia polecenia do przesłania pliku lokalnego na zdalny serwer:

scp nazwa-pliku-lokalnego nazwa-użytkownika@nazwa-hosta:ścieżka-do-pliku-zdalnego

Konfiguracja firewall

Aby udostępnić możliwość logowania, przy pomocy ssh musimy o tym poinformować naszą zaporę sieciową.

UFW

W przypadku zapory ogniowej UFW:

sudo ufw allow ssh

Gdybyśmy zmienili standardowy port logowana na inny:

sudo ufw allow ssh/<port>

Restart firewalla:

sudo ufw reload

Firewall-cmd

W przypadku zapory ogniowej firewalld:

firewall-cmd --permanent --add-service=ssh

Gdybyśmy zmienili standardowy port logowana na inny:

firewall-cmd --permanent --add-port=<port>/tcp

Restart firewalla:

systemctl restart firewalld

Podsumowanie – instalacja i konfiguracja SSH

SSH jest jednym z najważniejszych narzędzi, które musi poznać każdy administrator systemowy. Mam nadzieję, że przy pomocy tego materiału jako początkujący udało mi się zapoznać Cię z tym narzędziem. Do tego stopnia, że będziesz w stanie się nim posłużyć niezależnie od dystrybucji Linuksa, z jakiej korzystasz. Jak widzisz instalacja i konfiguracja SSH w Linuxie wcale nie jest taka trudna, więc z pewnością dasz sobie radę!

Chcesz wiedzieć jak zabezpieczyć swój serwer Linuxa? Zobacz nasz kurs! A może interesują Cię inne aspekty bezpieczeństwa IT? Przeczytaj nasze wpisy blogowe!

 

 

Ostatni webinar w tym roku!

Zapraszamy na bezpłatny webinar poświęcony roli sztucznej inteligencji w zarządzaniu infrastrukturą IT, zarówno w dużych serwerowniach, jak i w środowiskach homelab.

W trakcie wydarzenia dowiesz się, jak AI może wspierać codzienną pracę administratora, pomagając w automatyzacji procesów, monitorowaniu zasobów, analizie danych oraz zwiększaniu efektywności operacyjnej.

Zapisy na: https://asdevops.pl/warsztaty/

 

 

 

 

Warsztaty "Użycie AI w Serwerowni i Homelab"!

X