1. Co to jest SSH?
Wyobraź sobie, że jesteś na jednym końcu świata, a serwer, który trzeba skonfigurować, znajduje się na drugim. Praca szkolnego specjalisty IT biegającego między gabinetami – to nie jest to, czego chcemy. Na szczęście istnieje SSH (Secure SHell) – narzędzie do zdalnego zarządzania serwerami.
SSH to protokół sieciowy, który pozwala na bezpieczne połączenie zdalne z komputerami. Połączenie odbywa się przy użyciu szyfrowania, co oznacza, że przesyłane dane są chronione przed wścibskimi oczami. SSH zastępuje przestarzałe metody, takie jak Telnet, które przesyłały dane w formie otwartej (jak pocztówka z tradycyjnej poczty).
Zalety SSH
- Bezpieczeństwo. SSH wykorzystuje szyfrowanie, chroniąc dane przed przechwyceniem.
- Elastyczność. Zdalne zarządzanie serwerem, przesyłanie plików, tworzenie tuneli – wszystko to możliwe dzięki SSH.
- Wieloplatformowość. Działa zarówno na Linux, Windows (w tym w WSL), jak i MacOS.
Teraz, gdy już rozumiesz, po co jest SSH, przejdźmy do praktyki.
2. Instalacja klienta SSH
Zaczniemy od klienta, który umożliwi połączenie z serwerem. Jeśli używasz nowoczesnej dystrybucji Linuxa, klient SSH prawdopodobnie jest już zainstalowany. Sprawdźmy to:
ssh -V
Powinieneś zobaczyć informację o wersji klienta SSH. Jeśli komenda nie zostanie znaleziona, zainstaluj go (na Ubuntu i innych dystrybucjach opartych na Debianie):
sudo apt update
sudo apt install openssh-client
Na MacOS klient SSH jest preinstalowany, a jeśli pracujesz w WSL, instalacja jest analogiczna do Linuxa.
3. Połączenie ze zdalnym serwerem przez SSH
Połączenie z serwerem wykonuje się poleceniem:
ssh username@hostname
username— to nazwa użytkownika na zdalnym serwerze.hostname— to adres IP lub nazwa domenowa serwera.
Przykład połączenia:
ssh student@192.168.1.10
Jeśli wszystko jest poprawnie skonfigurowane, system poprosi o hasło. Po jego wpisaniu znajdziesz się w zdalnej konsoli serwera. Gratulacje, jesteś w połowie drogi do zawodu "operatora superzłoczyńcy w filmie o hakerach".
4. Instalacja i konfiguracja serwera SSH
Instalacja serwera SSH
Jeśli pracujesz na serwerze lub lokalnej maszynie, do której chcesz się połączyć, musisz zainstalować serwer SSH. Na Ubuntu zrób to tak:
sudo apt update
sudo apt install openssh-server
Sprawdźmy status usługi SSH:
sudo systemctl status ssh
Powinieneś zobaczyć komunikat w rodzaju active (running). Jeśli serwer nie jest uruchomiony, użyj:
sudo systemctl start ssh
sudo systemctl enable ssh
Teraz serwer SSH jest gotowy do przyjmowania połączeń.
Konfiguracja serwera SSH
Główny plik konfiguracyjny serwera SSH to /etc/ssh/sshd_config. Aby go edytować, użyj dowolnego edytora tekstu, na przykład nano:
sudo nano /etc/ssh/sshd_config
Zwróć uwagę na następujące parametry:
Port 22— port, na którym działa SSH.PermitRootLogin no— zakaz logowania się jako root (zaleca się pozostawienienoze względów bezpieczeństwa).PasswordAuthentication yes— zezwolenie na logowanie przy użyciu hasła.
Po zmianie parametrów zrestartuj serwer SSH:
sudo systemctl restart ssh
5. Używanie uwierzytelniania kluczem
Łączenie się za pomocą hasła jest wygodne, ale niezbyt bezpieczne. Najlepszą opcją jest używanie kluczy SSH.
Generowanie kluczy SSH
Na komputerze-kliencie wykonaj polecenie:
ssh-keygen
Skrypt zapyta o ścieżkę do zapisania klucza (domyślnie ~/.ssh/id_rsa). Możesz nacisnąć Enter, aby to zaakceptować. Następnie zapyta o hasło. Lepiej zostawić puste dla prostoty (chociaż to nie jest zbyt bezpieczne).
Po wykonaniu polecenia pliki kluczy zostaną utworzone:
id_rsa— klucz prywatny (nie udostępniaj go publicznie, jak kod źródłowy twojego projektu przed wydaniem, szczególnie jeśli już jest pełen „długów technicznych”).id_rsa.pub— klucz publiczny (jego można używać do połączeń).
Przesyłanie klucza na serwer
Użyj polecenia ssh-copy-id, aby przesłać klucz publiczny na serwer:
ssh-copy-id username@hostname
To doda twój klucz publiczny do pliku ~/.ssh/authorized_keys na serwerze. Teraz możesz się połączyć bez wprowadzania hasła.
Spróbuj:
ssh username@hostname
Jeśli wszystko przebiegło pomyślnie, nie zostaniesz poproszony o hasło. Twoje życie oficjalnie stało się trochę prostsze.
SSH i WSL
Jeśli pracujesz na Windowsie przez WSL, tam również możesz używać SSH. Otwórz terminal WSL i zainstaluj klienta SSH:
sudo apt update
sudo apt install openssh-client
Dalsze kroki są takie same jak dla Linuxa.
6. Część praktyczna: konfiguracja SSH na localhost
Dla ćwiczeń możesz skonfigurować połączenie SSH między dwoma komputerami w jednej sieci lub nawet na swoim własnym komputerze (używając localhost jako adres).
- Zainstaluj serwer i klienta SSH na jednym komputerze.
- Połącz się za pomocą adresu lokalnego:
ssh your_user@localhost
- Skonfiguruj połączenie za pomocą klucza, jak pokazano wyżej.
W rezultacie powinieneś uzyskać połączenie bez potrzeby podawania hasła.
7. Praca z konfiguracjami i aliasami SSH
Jeśli często łączysz się z różnymi serwerami, możesz ułatwić sobie życie, dodając konfigurację SSH do pliku ~/.ssh/config:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
Teraz możesz połączyć się prostą komendą:
ssh myserver
Najczęstsze błędy i ich naprawa
Błąd "Connection refused". To oznacza, że serwer SSH nie działa na zdalnej maszynie. Upewnij się, że jest zainstalowany i uruchomiony.
Błąd "Permission denied". Albo wpisałeś błędne hasło, albo klucze są źle skonfigurowane. Sprawdź zawartość pliku
~/.ssh/authorized_keysna serwerze.Błąd "No route to host". Sprawdź, czy serwer jest dostępny w sieci (użyj
ping).
Teraz masz wiedzę, jak konfigurować SSH, korzystać z kluczy i unikać typowych problemów. To potężne narzędzie używane wszędzie, czy to przy konfiguracji serwerów w pracy, czy zarządzaniu domowym Raspberry Pi.
GO TO FULL VERSION