Jak zainstalować i skonfigurować SSH
SSH (Secure Shell) to protokół używany do bezpiecznego łączenia się ze zdalnymi systemami, wykonywania poleceń i przesyłania danych. Zapewnia bezpieczną metodę dla administratorów systemu, programistów i użytkowników do zdalnego zarządzania serwerami i innymi urządzeniami przy użyciu szyfrowanych połączeń. Instalacja i konfiguracja SSH jest niezbędna do bezpiecznego dostępu do serwerów, zarówno w celu administrowania systemem, pracy zdalnej, jak i rozwoju.
W tym artykule przeprowadzimy Cię przez proces instalacji i konfiguracji SSH w systemie Linux, obejmujący podstawy, opcje konfiguracji i zalecenia dotyczące bezpieczeństwa.
Co to jest SSH?
SSH to skrót od Secure Shell, który pozwala użytkownikom bezpiecznie łączyć się ze zdalnym systemem za pośrednictwem interfejsu wiersza poleceń. Protokół szyfruje dane między klientem a serwerem, dzięki czemu jest to bezpieczna metoda komunikacji, szczególnie w przypadku uzyskiwania dostępu do serwerów za pośrednictwem niezabezpieczonej sieci, takiej jak Internet.
SSH domyślnie działa na porcie 22 i może być używany do:
- Zdalnego logowania do serwerów
- Bezpieczny transfer plików (przy użyciu SCP lub SFTP)
- Zdalnego wykonywania poleceń
- Przekierowanie portów i tunelowanie
Krok 1: Instalacja SSH
Większość dystrybucji Linuksa jest dostarczana z preinstalowanym SSH, ale jeśli nie jest zainstalowany, można go łatwo zainstalować za pomocą menedżera pakietów dla danej dystrybucji.
Dla Ubuntu/Debian:
Dla CentOS/RHEL:
Dla Fedory:
Dla Arch Linux:
Po instalacji zainstalowany zostanie serwer i klient OpenSSH, umożliwiając zarówno uruchamianie serwera SSH, jak i łączenie się z innymi serwerami SSH.
Krok 2: Uruchomienie i włączenie usługi SSH
Po zainstalowaniu należy uruchomić usługę SSH (znaną również jako sshd – demon SSH) i włączyć jej działanie podczas uruchamiania systemu.
Uruchamianie usługi SSH:
Włączenie uruchamiania SSH podczas rozruchu:
Możesz sprawdzić, czy SSH działa poprawnie, wpisując:
Jeśli usługa jest uruchomiona, zobaczysz aktywny status wskazujący, że SSH jest gotowe do przyjmowania połączeń.
Krok 3: Podstawowa konfiguracja SSH
Zachowanie SSH jest kontrolowane przez plik konfiguracyjny znajdujący się pod adresem:
Możesz edytować ten plik, aby zmodyfikować ustawienia SSH, takie jak zmiana domyślnego portu, wyłączenie logowania roota lub skonfigurowanie uwierzytelniania opartego na kluczach.
Aby edytować plik, użyj edytora tekstu, takiego jak nano lub vim:
Niektóre typowe zmiany konfiguracji obejmują:
1. Zmiana domyślnego portu SSH
Ze względów bezpieczeństwa warto zmienić domyślny port SSH z 22 na inny. Pomaga to zmniejszyć ryzyko zautomatyzowanych ataków, których celem jest domyślny port SSH.
Znajdź następujący wiersz w pliku konfiguracyjnym:
Usuń komentarz i zmień numer portu:
Po zapisaniu pliku uruchom ponownie usługę SSH, aby zastosować zmiany:
Pamiętaj, aby zaktualizować reguły zapory sieciowej, aby zezwalać na połączenia na nowym porcie.
2. Wyłącz logowanie roota
Zezwolenie na logowanie roota przez SSH stanowi zagrożenie dla bezpieczeństwa. Aby temu zapobiec, znajdź następującą linię w pliku konfiguracyjnym:
Zmień ją na:
Zapobiegnie to bezpośredniemu dostępowi roota przez SSH. Użytkownicy mogą nadal logować się za pomocą zwykłego konta, a następnie przełączać się na roota za pomocą sudo lub su.
3. Włącz uwierzytelnianie na podstawie klucza
Uwierzytelnianie oparte na kluczach SSH jest bezpieczniejszą metodą niż używanie haseł. Polega ona na wygenerowaniu pary kluczy SSH (klucza publicznego i prywatnego) i użyciu klucza prywatnego do uwierzytelnienia.
Aby wymusić uwierzytelnianie oparte na kluczach, znajdź następujące wiersze i upewnij się, że są ustawione na tak:
Wyłącza to logowanie oparte na haśle i umożliwia dostęp do SSH tylko poprzez uwierzytelnianie oparte na kluczach.
Krok 4: Generowanie kluczy SSH (uwierzytelnianie oparte na kluczach)
Pary kluczy SSH zapewniają bezpieczny sposób logowania bez hasła. Oto jak wygenerować i skonfigurować klucze SSH:
Krok 1: Generowanie pary kluczy SSH
Na komputerze lokalnym uruchom następujące polecenie, aby wygenerować parę kluczy:
Zostaniesz poproszony o podanie nazwy pliku do zapisania klucza (lub naciśnięcie klawisza Enter, aby użyć domyślnej lokalizacji) oraz opcjonalnego hasła dla dodatkowego bezpieczeństwa.
Spowoduje to utworzenie dwóch plików:
- ~/.ssh/id_rsa: Twój klucz prywatny (przechowuj go bezpiecznie i nie udostępniaj).
- ~/.ssh/id_rsa.pub: Twój klucz publiczny (może być udostępniany i dodawany do zdalnych serwerów).
Krok 2: Skopiuj klucz publiczny na serwer
Aby użyć klucza do logowania SSH, skopiuj klucz publiczny na zdalny serwer, do którego chcesz uzyskać dostęp. Można to zrobić za pomocą polecenia ssh-copy-id:
Zastąp username nazwą użytkownika zdalnego serwera, a remote_host adresem IP lub nazwą hosta serwera.
Spowoduje to skopiowanie klucza publicznego na serwer i dodanie go do pliku ~/.ssh/authorized_keys, umożliwiając logowanie bez hasła.
Krok 3: Logowanie przy użyciu klucza SSH
Teraz możesz zalogować się do zdalnego serwera przy użyciu klucza prywatnego:
Jeśli ustawiłeś niestandardowy port, określ go za pomocą opcji -p:
Krok 5: Zabezpieczenie konfiguracji SSH
Po skonfigurowaniu SSH ważne jest przestrzeganie najlepszych praktyk bezpieczeństwa, aby zapewnić ochronę serwera przed nieautoryzowanym dostępem.
1. Używaj silnych haseł (jeśli używasz uwierzytelniania hasłem)
Jeśli nie korzystasz z uwierzytelniania opartego na kluczach, upewnij się, że wszystkie konta użytkowników używają silnych, złożonych haseł.
2. Używanie zapory sieciowej
Upewnij się, że zapora serwera zezwala na ruch tylko na używanym porcie SSH. Na przykład, jeśli zmieniłeś SSH na port 2222, zezwól na ruch na tym porcie za pomocą ufw (w Ubuntu/Debian) lub firewalld (w CentOS/RHEL).
3. Ograniczanie dostępu SSH
Ogranicz dostęp SSH do określonych adresów IP lub zakresów, konfigurując zaporę sieciową lub używając /etc/hosts.allow i /etc/hosts.deny.
Krok 6: Testowanie i rozwiązywanie problemów z SSH
Po skonfigurowaniu SSH ważne jest, aby przetestować konfigurację. Spróbuj zalogować się za pomocą SSH, aby upewnić się, że wszystko działa poprawnie.
Typowe wskazówki dotyczące rozwiązywania problemów SSH:
- Sprawdź ustawienia zapory sieciowej: Upewnij się, że zapora sieciowa nie blokuje portu SSH.
- Sprawdź status usługi SSH: Upewnij się, że usługa SSH jest uruchomiona za pomocą systemctl status ssh.
- Weryfikacja konfiguracji: Podwójne sprawdzenie pliku /etc/ssh/sshd_config pod kątem wszelkich błędnych konfiguracji.
- Użyj trybu Verbose do debugowania: Jeśli występują problemy, użyj opcji -v podczas łączenia, aby zobaczyć szczegółowe dane wyjściowe:
Wnioski
Instalacja i konfiguracja SSH jest podstawową umiejętnością dla każdego administratora lub użytkownika Linuksa, który musi bezpiecznie zarządzać systemami zdalnymi. Postępując zgodnie z tym przewodnikiem, można skonfigurować SSH, skonfigurować go do bezpiecznego dostępu i wdrożyć najlepsze praktyki w celu ochrony serwera przed nieautoryzowanym dostępem. Po skonfigurowaniu SSH staje się potężnym narzędziem do zdalnego zarządzania, automatyzacji i bezpiecznej komunikacji między systemami.