Co to jest ssh?
Autor: Redakcja Domeny.ForSale Opublikowano
W skrócie: SSH (Secure Shell) to protokół, czyli zestaw zasad komunikacji, który pozwala bezpiecznie łączyć się z innym komputerem przez sieć i wykonywać na nim polecenia. Szyfruje przesyłane dane, dlatego nadaje się do zdalnego zarządzania serwerem także przez internet. Do połączenia potrzebujesz programu obsługującego SSH, adresu serwera, konta użytkownika oraz hasła lub odpowiednio skonfigurowanego klucza.
Do czego służy SSH?
Najczęściej SSH służy do pracy na zdalnym komputerze za pomocą terminala, czyli interfejsu tekstowego. Po zalogowaniu wpisujesz polecenia wykonywane na serwerze, a nie na swoim laptopie. Możesz w ten sposób sprawdzać dzienniki błędów, aktualizować oprogramowanie i zmieniać konfigurację usług — w granicach uprawnień swojego konta.
Przykładowo: strona na twoim serwerze VPS, czyli wirtualnym serwerze prywatnym, przestaje działać. Przez SSH możesz sprawdzić, czy brakuje miejsca na dysku, odczytać komunikaty błędów i uruchomić ponownie usługę, jeśli masz odpowiednie uprawnienia. Nie potrzebujesz do tego graficznego pulpitu serwera.
SSH ma też inne zastosowania:
- Przesyłanie plików przez SFTP — protokół transferu plików działający przez połączenie SSH. SFTP nie jest tym samym co FTP ani FTPS.
- Praca z repozytoriami Git — klucz SSH może potwierdzać twoje uprawnienia przy pobieraniu i wysyłaniu zmian w kodzie.
- Tunelowanie połączeń — przekazywanie ruchu wybranej aplikacji przez szyfrowany kanał, na przykład przy dostępie do bazy danych niedostępnej bezpośrednio z internetu.
Jak działa szyfrowane połączenie SSH?
Po jednej stronie działa klient SSH, czyli program inicjujący połączenie. Po drugiej działa serwer SSH, czyli usługa przyjmująca połączenia. Popularną implementacją obu tych elementów jest OpenSSH. Domyślnie usługa nasłuchuje na porcie TCP 22; port to numer wskazujący usługę na danym urządzeniu.
Podczas nawiązywania połączenia klient i serwer uzgadniają zabezpieczenia i tworzą szyfrowany kanał. Klucz hosta, czyli klucz identyfikujący serwer, pozwala klientowi sprawdzić, z jaką maszyną rozmawia. Następnie serwer sprawdza tożsamość użytkownika, na przykład przy użyciu hasła lub klucza użytkownika.
Szyfrowanie chroni treść poleceń, wyników i przesyłanych danych przed podsłuchem podczas transmisji. Nie zabezpiecza jednak przed każdym zagrożeniem: zainfekowany laptop może przechwycić dane przed zaszyfrowaniem, a przejęty serwer może ujawnić je po odszyfrowaniu. SSH nie ukrywa też samego faktu komunikacji między urządzeniami.
Jak połączyć się z serwerem przez SSH?
Najpierw sprawdź w panelu lub dokumentacji dostawcy hostingu, czy twój pakiet udostępnia SSH. Hosting współdzielony może ograniczać tę funkcję lub zakres dostępnych poleceń. Potwierdź adres hosta, nazwę użytkownika, port i dopuszczony sposób logowania — danych tych nie należy zgadywać na podstawie adresu strony.
W systemach Linux i macOS klient SSH jest zwykle dostępny w terminalu. W Windows można korzystać z klienta OpenSSH, jeśli jest zainstalowany, na przykład w PowerShell. Podstawowe polecenie wygląda tak:
ssh anna (at) serwer.example
Zastąp anna nazwą swojego konta, a serwer.example rzeczywistym adresem serwera lub jego adresem IP. Jeśli dostawca wskazuje inny port, na przykład 2222, użyj:
ssh -p 2222 anna (at) serwer.example
Przy pierwszym połączeniu program zwykle wyświetli odcisk klucza hosta, czyli skrót pozwalający rozpoznać klucz serwera. Porównaj go z informacją uzyskaną z zaufanego źródła, na przykład panelu dostawcy lub od administratora niezależnym kanałem. Nie akceptuj go automatycznie tylko dlatego, że program pyta o zgodę.
Przy logowaniu hasłem terminal zwykle nie pokazuje wpisywanych znaków ani gwiazdek — to normalne. Po zalogowaniu możesz wykonać whoami, aby sprawdzić nazwę bieżącego użytkownika, oraz pwd, aby zobaczyć bieżący katalog. Polecenie exit kończy sesję.
Hasło czy klucz SSH — co wybrać?
Logowanie hasłem jest proste, ale wystawiona do internetu usługa może być celem automatycznych prób odgadywania haseł. Do regularnej administracji dobrym wyborem jest klucz SSH. Nie zwalnia on jednak z ochrony komputera, na którym go przechowujesz.
Klucz SSH to para powiązanych elementów: klucz publiczny umieszczasz na serwerze, a klucz prywatny pozostaje na twoim urządzeniu. Podczas logowania klient potwierdza posiadanie klucza prywatnego bez wysyłania go na serwer. Nie należy mylić tej pary z kluczem hosta, który identyfikuje sam serwer.
W OpenSSH parę kluczy można wygenerować poleceniem:
ssh-keygen -t ed25519
Ustaw hasło chroniące klucz prywatny i nie nadpisuj istniejącego klucza bez sprawdzenia, do czego służy. Plik zakończony .pub zawiera klucz publiczny; dodaj go zgodnie z instrukcją dostawcy. Pliku prywatnego nie wysyłaj administratorowi ani do pomocy technicznej.
Jak uniknąć błędów i utraty dostępu?
Ostrzeżenie o zmianie klucza hosta może wynikać z reinstalacji serwera, ale może też oznaczać połączenie z inną maszyną lub próbę przechwycenia komunikacji. Najpierw potwierdź przyczynę u administratora. Usunięcie zapisanego klucza wyłącznie po to, by komunikat zniknął, omija ważną kontrolę bezpieczeństwa.
Do codziennej pracy używaj konta z ograniczonymi uprawnieniami zamiast konta root, które ma pełną kontrolę nad systemem. Aktualizuj oprogramowanie SSH i nie wykonuj nieznanych poleceń bez zrozumienia ich skutków. Sama zmiana portu nie zastępuje właściwego uwierzytelniania.
Jeżeli chcesz wyłączyć logowanie hasłem, najpierw sprawdź dostęp kluczem w drugiej sesji, pozostawiając pierwszą otwartą. Przed zmianą konfiguracji ustal też, jak skorzystać z konsoli ratunkowej dostawcy — dzięki temu błąd nie odetnie cię od serwera.
Zobacz też: Co to jest CDN?
