Powrót do bloga

Konfigurowanie serwera Linux do korzystania z uwierzytelniania opartego na kluczach SSH

Konfigurowanie serwera Linux do korzystania z uwierzytelniania opartego na kluczach SSH

SSH na serwerze Linux

SSH, znany również jako secure shell, to protokół, który może być używany do łączenia się i komunikowania z serwerem. Możesz połączyć się ze swoim serwerem Linux w celu uzyskania sesji terminala przy użyciu tego szyfrowanego protokołu. Jeśli używasz serwera OpenSSH, istnieją przede wszystkim dwa różne sposoby przeprowadzenia procesu uwierzytelniania. Pierwszym z nich jest standardowe uwierzytelnianie oparte na haśle. W tym przypadku po prostu używasz swojej nazwy użytkownika i hasła, aby uzyskać dostęp do konta. Drugim sposobem jest skonfigurowanie serwera Linux do uwierzytelniania opartego na kluczach SSH.

W tym poradniku skupimy się na tym, jak skonfigurować serwer Linux, aby używał kluczy SSH jako głównej metody uwierzytelniania. Omówimy również, dlaczego klucze SSH są często preferowane w stosunku do zwykłego mechanizmu ochrony hasłem.

Czym są klucze SSH?

Klucze SSH są podobne do danych uwierzytelniających, których używasz do logowania się na swoje konto na serwerze. Zamiast wpisywać nazwę użytkownika i hasło, używasz pary kluczy SSH, która również stanowi dane dostępowe. Choć klucze te są kryptograficzne, należy traktować je jako dane uwierzytelniające, ponieważ taki jest cel ich stosowania.

Typowy klucz SSH składa się z dwóch części: klucza autoryzowanego (authorized key) i klucza tożsamości (identity key). Klucz autoryzowany to klucz publiczny, który działa w połączeniu z Twoim prywatnym kluczem tożsamości, aby zapewnić Ci dostęp do konta. Klucz publiczny znajduje się na zdalnym serwerze, na który chcesz się zalogować przez SSH, i pozostaje w pliku ~/.ssh/authorized_keys powiązanym z Twoim kontem użytkownika. Klucze tożsamości służą do weryfikacji Twojej tożsamości jako właściwego użytkownika, aby upewnić się, że tylko upoważniony personel ma dostęp do danego konta. Zbiorczo klucze te nazywane są kluczami użytkownika, ponieważ uwierzytelniają tożsamość użytkownika. Gdy serwer zweryfikuje oba klucze, inicjowana jest sesja powłoki w celu wykonywania Twoich poleceń.

Istnieją również klucze hosta i klucze sesji. Protokół uwierzytelnia lokalny komputer, system lub serwer za pomocą klucza hosta. Klucze sesji pomagają szyfrować strumień danych w połączeniu. Dzięki temu Twoja sesja i powiązane z nią działania są znacznie bezpieczniejsze.

Klucze SSH a ochrona hasłem

Głównym powodem, dla którego uwierzytelnianie oparte na kluczach SSH jest preferowane w stosunku do ochrony hasłem, jest to, że ta druga metoda może narazić Cię na cyberataki. Większość osób nie używa niezwykle skomplikowanych haseł, aby móc je zapamiętać, gdy muszą się zalogować. W rezultacie tworzy to słaby punkt. Wielu atakujących stosuje metodę siłową, aby złamać stosunkowo proste hasło i włamać się na konto. W dzisiejszych czasach stało się to szczególnie łatwe ze względu na automatyzację i zaawansowane technologie hakerskie.

Z drugiej strony klucze SSH oferują znacznie bezpieczniejszy sposób uzyskania dostępu do konta. Jak wspomnieliśmy wcześniej, metoda ta wykorzystuje klucz publiczny i klucz prywatny do uwierzytelnienia tożsamości klienta. Podczas gdy klucz publiczny możesz udostępnić każdemu, klucz prywatny musisz zachować w tajemnicy. Po sparowaniu klucz publiczny deszyfruje klucz prywatny w celu uwierzytelnienia Twojej tożsamości. Ponadto możesz zwiększyć ochronę, dodając hasło (passphrase) do pary kluczy. Więcej o haśle powiemy w dalszej części poradnika. Jednak nawet bez hasła Twój prywatny klucz SSH jest niezwykle bezpieczny na Twoim lokalnym komputerze. Sieć nigdy nie ma bezpośredniego dostępu do klucza, który znajduje się w katalogu o ograniczonym dostępie i jest zabezpieczony uprawnieniami o ograniczonym dostępie.

Generowanie kluczy SSH

Aby wygenerować parę kluczy SSH, musisz skorzystać z pakietu narzędzi OpenSSH i zlokalizować ssh-keygen. Jest to specjalne narzędzie użytkowe, które pozwala wygenerować parę kluczy SSH o rozmiarze około 2048 bitów. Rozpocznij od uruchomienia tego polecenia:

Spowoduje to wyświetlenie następującego komunikatu:

Komunikat wygeneruje klucz prywatny o nazwie id_rsa oraz klucz publiczny o nazwie id_rsa.pub. W tym momencie możesz wybrać, gdzie chcesz zapisać klucz. Zalecamy pozostanie przy domyślnej lokalizacji poprzez naciśnięcie klawisza Enter. Pozostanie przy domyślnej lokalizacji gwarantuje, że serwer automatycznie zlokalizuje i zweryfikuje klucze przy każdym logowaniu do tego systemu. Domyślna lokalizacja to katalog ~/.ssh w katalogu domowym. Jeśli wolisz wybrać inne miejsce, wpisz tę lokalizację.

Nadpisywanie starszych kluczy SSH

Warto zauważyć, że w systemie można mieć jednocześnie tylko jedną parę kluczy SSH. Oznacza to, że jeśli wcześniej wygenerowano i zapisano parę kluczy w systemie, wyświetlony zostanie następujący komunikat:

Aby kontynuować tworzenie i zapisywanie nowej pary kluczy SSH, musisz usunąć istniejącą. Pamiętaj: jeśli nadpiszesz klucz zapisany już na dysku, nie będziesz mógł go już używać do celów uwierzytelniania. Jest to proces nieodwracalny, więc upewnij się, że masz absolutną pewność, że chcesz nadpisać starą parę kluczy.

Ustawianie hasła (passphrase)

Po skonfigurowaniu kluczy w katalogu zostaniesz zapytany, czy chcesz podać hasło zabezpieczające:

Hasło jest opcjonalne – możesz je pominąć. Dodaje ono jednak dodatkową warstwę bezpieczeństwa dla Twojego klucza prywatnego poprzez zaszyfrowanie go na dysku. Jeśli zdecydujesz się na użycie hasła, będziesz musiał wprowadzić je poprawnie za każdym razem, gdy spróbujesz zalogować się przy użyciu tej pary kluczy SSH:

Na koniec powinieneś mieć już swoje klucze SSH, których możesz użyć do uwierzytelnienia klienta.

Osadzanie klucza SSH na koncie serwera

Zanim użyjesz kluczy do uwierzytelniania, musisz osadzić klucz publiczny na zdalnym serwerze Linux. Następnie pokażemy Ci, jak to zrobić podczas tworzenia serwera CloudSigma. Najpierw musisz znaleźć swój publiczny klucz SSH, aby móc go skopiować i wkleić. Jeśli użyłeś powyższej metody do wygenerowania pary kluczy SSH, możesz znaleźć klucz publiczny, wpisując następujące polecenie:

Spowoduje to wyświetlenie publicznego klucza SSH w następujący sposób:

Skopiuj tę wartość, aby użyć jej później. Podczas tworzenia serwera w CloudSigma masz możliwość dodania klucza SSH po wybraniu rozmiaru serwera i obrazu systemu operacyjnego:

single server creation

Kliknij Dodaj i wklej to, co skopiowałeś, aby osadzić klucz SSH w swoim serwerze. W rezultacie przy każdym uruchomieniu serwera będzie on już posiadał wstrzyknięty klucz SSH.

Kopiowanie klucza publicznego na istniejący serwer

Chociaż powyższa metoda działa podczas tworzenia nowego serwera, czy możliwe jest osadzenie klucza SSH w istniejącym serwerze? Odpowiedź brzmi tak, a istnieje wiele sposobów, aby to zrobić, w zależności od narzędzi, którymi dysponujesz.

Używanie SSH-Copy-ID

To najprostszy i najłatwiejszy sposób na skopiowanie klucza publicznego. Wszystko, czego potrzebujesz, to narzędzie pomocnicze ssh-copy-id, które znajdziesz w standardowym pakiecie OpenSSH. Zanim jednak skorzystasz z tej metody, upewnij się, że na Twoim serwerze jest włączone uwierzytelnianie oparte na haśle. Aby skopiować klucz, zastosujesz składnię ssh-copy-id, a następnie wprowadzisz zdalny host, z którym chcesz się połączyć. Będziesz musiał również określić konto, z którym się łączysz. Musisz mieć dostęp do konta oparty na haśle, aby Twój klucz został skopiowany we właściwe miejsce. Polecenie powinno wyglądać następująco:

Może to spowodować wyświetlenie na ekranie komunikatu podobnego do poniższego:

Dzieje się tak zazwyczaj wtedy, gdy łączysz się z tym konkretnym zdalnym hostem po raz pierwszy. Oznacza to po prostu, że komputer nie rozpoznał hosta. Wszystko, co musisz zrobić, to wpisać „tak” i nacisnąć Enter. Gdy to zrobisz, narzędzie przeskanuje konto w poszukiwaniu Twojego klucza publicznego. Po jego zlokalizowaniu poprosi Cię o podanie hasła do konta:

Następnie możesz wprowadzić swoje hasło. Po połączeniu się z kontem narzędzie skopiuje zawartość klucza ~/.ssh/id_rsa.pub i wklei ją do pliku authorized_keys w katalogu ~/.ssh na Twoim zdalnym koncie. Następnie zobaczysz następujący komunikat:

Oznacza to, że pomyślnie skopiowałeś swój klucz publiczny na istniejący serwer zdalny.

Używanie SSH

Jest to dość tradycyjna metoda kopiowania klucza publicznego na serwer. Wskazane jest jej użycie, jeśli nie masz dostępu do narzędzia ssh-copy-id. Ponownie, musisz mieć dostęp do swojego konta oparty na haśle. W zasadzie polega to na wyświetleniu zawartości klucza publicznego na komputerze i przesłaniu jej na zdalny serwer za pośrednictwem ustanowionego między nimi połączenia SSH. Polecenie, którego użyjesz w tym celu, powinno wyglądać następująco:

Jak widać, określiliśmy, że klucz powinien zostać umieszczony w pliku authorized_keys w katalogu ~/.ssh na serwerze. Użycie symbolu >> zapewnia również, że dodajemy klucze zamiast ich nadpisywania. Po uruchomieniu polecenia może pojawić się następujący komunikat:

Podobnie jak w przypadku poprzedniego komunikatu, oznacza to, że komputer nie rozpoznał zdalnego hosta. Wpisz „yes” i naciśnij Enter, aby przejść dalej. Teraz wprowadzisz hasło do konta:

Po zweryfikowaniu hasła klucz zostanie skopiowany do pliku na Twoim koncie użytkownika, zgodnie z opisem.

Ręcznie

W przypadku, gdy nie masz dostępu opartego na haśle do swojego konta na zdalnym serwerze, możesz skopiować klucz publiczny ręcznie. Celem jest umieszczenie zawartości pliku id_rsa.pub w pliku ~/.ssh/authorized_keys na zdalnym urządzeniu. Jak już wiemy, możemy wyświetlić zawartość klucza id_rsa.pub za pomocą tego polecenia:

Zawartość Twojego klucza publicznego SSH będzie wyglądać następująco:

Następnie musisz uzyskać dostęp do swojego konta na zdalnym hoście za pomocą dowolnych dostępnych środków. Po zalogowaniu upewnij się, że katalog ~/.ssh istnieje. Jeśli nie, możesz uruchomić następujące polecenie, aby go utworzyć:

Teraz możesz użyć tego polecenia, aby dodać zawartość pliku id_rsa.pub do pliku authorized_keys w katalogu ~/.ssh na zdalnym serwerze:

Zamiast wpisywać „public_key_string” w tym poleceniu, musisz wprowadzić zawartość klucza, którą wcześniej wyodrębniłeś, uruchamiając polecenie cat ~/.ssh/id_rsa.pub.

Uwierzytelnianie za pomocą klucza SSH

Teraz możesz łatwo zalogować się na swoje konto, używając wyłącznie kluczy SSH. Oznacza to, że nie potrzebujesz już hasła, aby uzyskać dostęp do konta na serwerze. Użyjesz danych uwierzytelniających, których zwykle używasz do logowania:

Może to spowodować wyświetlenie następującego komunikatu:

Nie martw się, jeśli zobaczysz ten komunikat. Oznacza on po prostu, że system lokalny nie jest w stanie rozpoznać zdalnego hosta. Zazwyczaj dzieje się tak, gdy łączysz się z hostem po raz pierwszy. Wszystko, co musisz zrobić, to wpisać „yes” i nacisnąć Enter. Wracając do niektórych poprzednich kroków, jeśli zastosowałeś hasło klucza (passphrase), to właśnie tutaj będziesz musiał je wprowadzić. Jeśli tego nie zrobiłeś, zalogujesz się na swoje konto od razu po uwierzytelnieniu kluczy SSH. Spowoduje to otwarcie nowej sesji powłoki w ramach Twojego bieżącego konta na komputerze lokalnym.

Jak wyłączyć uwierzytelnianie hasłem na serwerze?

Skoro już wiesz, jak skonfigurować klucze SSH, musisz wyłączyć uwierzytelnianie hasłem. Nawet jeśli możesz używać kluczy SSH do uwierzytelniania, nadal jesteś podatny na ataki typu brute-force, jeśli proces uwierzytelniania hasłem jest aktywny. Zanim wyłączysz mechanizm uwierzytelniania hasłem, upewnij się, że konfiguracja uwierzytelniania opartego na kluczach SSH dotyczy konta root na serwerze lub że skonfigurowane konto ma uprawnienia sudo. Powodem tego potwierdzenia jest upewnienie się, że zachowasz dostęp administracyjny do konta nawet po wyłączeniu haseł. Teraz możesz użyć tego klucza SSH, aby zalogować się na swoje konto na serwerze. Następnym krokiem jest otwarcie pliku konfiguracyjnego demona SSH:

W tym miejscu musisz wyszukać następującą dyrektywę:

Musisz odkomentować tę linię i zmienić wartość na „no”, w następujący sposób:

Wykonanie tej czynności wyłączy uwierzytelnianie oparte na haśle. Po zakończeniu po prostu zapisz plik i zamknij go. Na koniec musisz zrestartować urządzenie, aby zastosować zmiany. Jeśli korzystasz z urządzenia z systemem Ubuntu lub Debian, możesz również użyć następującego polecenia, aby wyłączyć logowanie oparte na haśle:

Aby upewnić się, że Twój demon, czyli sshd, zezwala wyłącznie na uwierzytelnianie oparte na SSH na serwerze w systemach CentOS lub Fedora, użyj polecenia:

Conclusion

Po wykonaniu wszystkich tych kroków powinieneś mieć skonfigurowane i działające uwierzytelnianie oparte na kluczach SSH na swoim serwerze. Teraz możesz mieć pewność, że Twoje serwery są bezpieczne i chronione!

Miłego korzystania z komputera!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.