Wprowadzenie do SSH: konfiguracja zdalnego dostępu, używanie kluczy
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ę pozostawienieno
ze 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_keys
na 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