🍪 Można ciasteczko?

Ta strona chce wykorzystywać pliki cookie do analizowania ruchu oraz mierzenia skuteczności i personalizacji reklam zgodnie z polityką prywatności. Zgadzasz się?

PORADNIKI

9 min. czytania

Klucz SSH – bezpieczne logowanie bez hasła

Klucze SSH

Fot. Depositphotos

Na czym polega logowanie SSH bez użycia hasła? Jak to możliwe, że nie naraża ono danych na niebezpieczeństwo? Dowiedz się, jak wygenerować klucz SSH i wygodnie nawiązywać połączenia z serwerem.

Spis treści
Serwer

Być może kiedyś obiły Ci się o uszy takie określenia, jak „klucz publiczny” i „klucz prywatny” SSH. To dość popularna metoda nawiązywania połączenia z serwerem. Co więcej, uważana jest za jedną z najbezpieczniejszych. Stanowi alternatywę dla klasycznego logowania przy użyciu loginu (albo nazwy użytkownika) oraz hasła. O wiele lepiej natomiast chroni wszystkie dane, znajdujące się na zdalnym urządzeniu.

Faktem jest natomiast, że korzystanie z pliku klucza jest nieco skomplikowane. Bywa czasochłonne i bez odpowiedniej instrukcji może sprawiać problemy. Wymaga to bowiem najpierw wygenerowania klucza prywatnego i publicznego na własnym komputerze. Następnie jeszcze należy jeden z nich umieścić na serwerze. To proces dość złożony, szczególnie dla osób, które będą robiły to po raz pierwszy. W tym artykule natomiast dokładnie wyjaśnimy, jak wykonać to krok po kroku. Nasza instrukcja Ci we wszystkim pomoże, a została stworzona tak, żeby każdy sobie poradził.

Dzięki temu nawiążesz wygodne połączenie przy użyciu protokołu SSH. Nie będziesz więcej używać loginu i hasła, a Twoje dane pozostaną bezpieczne. Klucz publiczny dodatkowo będzie niczym zamek w drzwiach. Ochroni zawartość serwera do czasu, aż nie odblokuje go plik klucza prywatnego. Ten z kolei przypisany będzie tylko do Twojego komputera.

Co to jest klucz SSH? Definicja

Klucze SSH to pliki zabezpieczone szyfrowaniem RSA, czyli niesymetrycznym algorytmem szyfrującym. Jego działanie oparte jest na dwóch kluczach. Publiczny służy do kodowania informacji, a prywatny do ich odczytywania. Dzięki temu pierwszy z wymienionych może trafić do wszystkich osób zainteresowanych. W żaden sposób bowiem nie umożliwia odczytania danych chronionych. Drugi natomiast powinien zostać odpowiednio zabezpieczony. Nie może wpaść w niepowołane ręce.

Protokół komunikacyjny SSH pozwala na przesyłanie danych w zaszyfrowanej formie. Dzięki niemu połączysz się z serwerem internetowym z dowolnego miejsca, w którym się znajdujesz. W ten sposób możesz zdalnie zarządzać zarówno nim, jak i znajdującymi się na nim plikami. Swobodnie skopiujesz je, pobierzesz oraz prześlesz ze swojego dysku lokalnego do własnego miejsca w sieci.

Nawiązane połączenie musi być jednak bezpieczne. Właściwa ochrona to gwarancja, że wszystkie informacje przechowywane na serwerze, nie trafią do osób trzecich. Logowanie się za każdym razem przy użyciu loginu, nazwy użytkownika oraz hasła bywa jednak męczące. Nie każdemu zwyczajnie chce się wpisywać te dane, szczególnie gdy są dość długie. Często też można je zapomnieć, co tylko przysparza problemów.

Całą procedurę ułatwić mogą natomiast właśnie klucze SSH. Dzięki nim możesz połączyć swój komputer z serwerem w wygodniejszy sposób. Każde kolejne połączenie SSH nie będzie już od Ciebie wymagało podawania danych logowania. Na zdalnym serwerze Twoje urządzenie będzie rozpoznawane automatycznie. Jednocześnie nikt inny nie będzie miał dostępu do ani jednego katalogu, który będzie w Twoim miejscu w sieci. Wszystko dzięki umieszczeniu kluczy w odpowiedni sposób na komputerze lokalnym oraz sprzęcie zdalnym.

Do czego służy klucz SSH?

Klucz SSH uwierzytelnia urządzenie i sprawia, że serwer może się z nim połączyć. W praktyce jest to para kluczy, których komplet jest niezbędny do przeprowadzenia autoryzacji. Zarówno klucz publiczny, jak i prywatny, składają się z długiego ciągu losowych znaków. Algorytm sprawia natomiast, że oba do siebie pasują i wzajemnie sobie „odpowiadają”. Dzięki temu wyłącznie ich połączenie pozwala sparować dwa urządzenia i nawiązać stałe połączenie między nimi.

Wyżej wspominaliśmy, że zastosowanie tej metody to gwarancja bezpieczeństwa danych znajdujących się na serwerze. Z czego to wynika? Otóż obecność klucza publicznego na serwerze nic nie daje bez klucza prywatnego. W praktyce natomiast prawdopodobieństwo odgadnięcia ciągu znaków z pliku prywatnego jest znikoma. Nikt, kto nie ma klucza prywatnego, nie nawiąże połączenia przy użyciu klucza publicznego. Umieszczenie go na serwerze jest więc całkowicie bezpieczne.

Oczywiście, jak każdy plan, i ten ma także nieco słabsze strony. W tym przypadku za taką musimy uznać lokalizację klucza prywatnego. Jeśli nie zabezpieczymy go wystarczająco dobrze albo udostępnimy go nieodpowiedniej osobie, nasze dane będą zagrożone. Użytkownik, który go otrzyma, będzie mógł nawiązać połączenie SSH i zarządzać naszym serwerem. Co za tym idzie, zyska dostęp do przechowywanych tam plików i informacji. Właśnie dlatego tak bardzo trzeba na niego uważać.

Jak działa klucz SSH?

Działanie kluczy SSH oparte jest na tym, że są one w stanie wzajemnie się rozpoznawać. Zawsze funkcjonują w parach, umożliwiając bezpieczne połączenie ze zdalnym komputerem. Aby jednak to było możliwe, konieczne jest ich wygenerowanie na lokalnym urządzeniu. Następnie klucz publiczny umieszcza się na serwerze w odpowiednim folderze. Dalej z poziomu konsoli Linuxa, macOS lub przy użyciu odpowiedniego programu następuje próba nawiązania połączenia.

Publiczny klucz z serwera weryfikuje obecność swojego prywatnego odpowiednika. Jeśli jest on poprawny, powinno nastąpić połączenie. Nie potrzebne jest do jego nawiązania wpisywanie dodatkowych haseł. Dla wzmocnienia zabezpieczeń można dodatkowo nadać im hasło szyfrujące. Jego wpisanie konieczne jest natomiast tylko przy pierwszej weryfikacji.

Klucz publiczny SSH

Jeśli chcemy logować się szybciej, generujemy klucz publiczny i prywatny. Plik z tym pierwszym domyślnie nosi nazwę id_rsa.pub i to jego zawartość umieszczamy na serwerze w pliku authorized_keys umieszczonym w folderze .ssh. Najłatwiej zrobić to możemy:

  • z poziomu wiersza poleceń – w systemie Linux i macOS,
  • przy użyciu odpowiedniego programu (np. PuTTY) – w Windows.

Chcesz się upewnić, że wygenerowany został klucz publiczny? Gdy otworzysz plik, na początku powinien być widoczny wpis ssh-rs. Na jego końcu z kolei znajduje się formuła rozpoznająca Twoje urządzenie. Plik możesz otworzyć w notatniku lub innym programie tekstowym.

Klucz prywatny SSH

Klucz prywatny, który po wygenerowaniu pobierasz na swój dysk, dysponuje domyślną nazwą „id_rsa_”. Gdy otworzysz go przy użyciu pliku tekstowego, pokaże Ci się blok znaków. Rozpoczynają się one natomiast charakterystyczną formułą „BEGIN OPENSSH PRIVATE KEY”. Na samym końcu widać natomiast analogiczny napis: „END OPENSSH PRIVATE KEY”.

Ten plik musisz schować na dysku swojego komputera lub innego urządzenia, przy pomocy którego łączysz się z serwerem. Pamiętaj, by nigdy nikomu niepowołanemu go nie udostępniać.

Generowanie kluczy SSH w systemie Windows

Jeśli chcesz wygenerować klucz SSH w systemie Windows, pobierz program Puttygen / PuTTY Key Generator. Uruchom plik .exe, a na ekranie pojawi się okno aplikacji. Powinna być widoczna w nim informacja o kluczach, które do tej pory zostały wygenerowane (przypuszczalnie: „No key.”).

Naciśnij przycisk „Generate”, by rozpocząć tworzenie klucza. Konieczne jest wtedy bezustanne poruszanie myszką. To jedyny sposób, żeby proces postępował. System zbiera w taki sposób losowe dane potrzebne do wygenerowania klucza.

Gdy proces dobiegnie końca, pole „Key” zapełni się wartością klucza. Pod spodem możesz nadać (opcjonalnie) dodatkowe hasło, które będzie chroniło plik. Jeśli chcesz zastosować to zabezpieczenie, wpisz kod dwukrotnie w pola:

  • Key passphrase,
  • Confirm passphrase.

Następnie możesz zapisać klucz prywatny oraz publiczny. Aby to zrobić, kolejno naciśnij przyciski:

  • Save private key,
  • Save public key.

Samodzielnie wybierasz miejsce zapisu plików, podobnie jak każdej innej, pobieranej zawartości. Warto natomiast przede wszystkim umieścić go w miejscu:

  • bezpiecznym,
  • które zapamiętasz.

W przyszłości będzie trzeba wskazać klientowi SSH (np. PuTTY 3]), gdzie klucz się znajduje. To niezbędne, aby mógł z niego korzystać. Nie zapomnij więc, gdzie go zapisujesz.

Generowanie kluczy SSH w systemach Linux i macOS

Wygenerowanie klucza w macOS i Linuxie nie wymaga pobierania żadnych specjalnych programów. Wystarczy tylko, że użyjesz odpowiedniego polecenia na konsoli. Cały proces rozpisaliśmy poniżej krok po kroku, przy użyciu komputera z macOS. Na drugim z wymienionych systemów wygląda to jednak niemalże identycznie.

Najpierw otwórzmy wbudowane narzędzie uruchamiające wiersz poleceń. Wystarczy tylko, że naciśniemy Command i spację, a następnie w Spotlight wyszukamy Terminal.

W otwartym oknie wpisz poniższe polecenie:

ssh-keygen

Na ekranie zaczną wyświetlać Ci się kolejne linijki. Przy „Enter passphrase” możesz podać dodatkowe hasło zabezpieczające. Jest to opcjonalne rozwiązanie, bo dzięki niemu Twoje dane są jeszcze lepiej chronione. Jeśli nie chcesz wpisywać żadnego hasła, naciśnij przycisk Enter. Wtedy pojawi się kolejna linijka o treści „Enter same passphrase again”. Podaj ponownie zabezpieczenie lub znów zostaw pole puste i zatwierdź Enterem. Następnie system poinformuje Cię, w którym miejscu zapisał klucze:

  • Your identification has been saved in – miejsce zapisu klucza prywatnego,
  • Your public key has been saved in – miejsce zapisu klucza publicznego.

W powyższych linijkach widać też nazwy plików. W naszym przypadku są domyślne, tak jak wyżej to opisywaliśmy, czyli:

  • id_rsa – klucz prywatny,
  • id_rsa.pub – klucz publiczny.

Po wykonaniu powyższych kroków Twoje klucze domyślnie trafiają do folderu „SSH”.

Aby go znaleźć na macOS, otwórz Findera. Następnie z opcji w prawym górnym rogu ekranu wybierz „Idź” i naciśnij „Idź do folderu„. Tam wklej lokalizację klucza. System przeniesie Cię prosto do odpowiedniego katalogu. Zobaczysz w nim dwa pliki, które właśnie zostały wygenerowane. Aby klucze mogły być używane w macOS, wykonaj polecenie:

ssh-add ~K/.ssh/nazwa_pliku_z_kluczem_prywatnym

Następnie możesz (opcjonalnie) skonfigurować korzystanie z klucza dla poszczególnych domen. Wykonuje się to w pliku ~/.ssh/config. Dla poszczególnych pól wygląda to następująco:

  • host: nazwa domeny dla stworzonego klucza,
  • HostName: nazwa domeny,
  • User: nazwa użytkownika,
  • IdentityFile: lokalizacja klucza,
  • AddKeysToAgent: Yes,
  • UseKeychain: Yes,
  • IdentityFile: lokalizacja klucza.

Jak dodać klucze SSH do serwera z linii poleceń?

Nowy klucz publiczny musisz umieścić na swoim serwerze, w katalogu z autoryzowanymi kluczami. Jeśli z serwera korzysta wielu użytkowników, to klucz powinien znaleźć się w folderze tej osoby, która ma odpowiadający mu klucz prywatny. Możesz zrobić to na wiele różnych sposobów. Polecane jest natomiast wykonanie tego z poziomu linii poleceń.

Wystarczy więc tylko, że po raz ostatni zalogujesz się w tradycyjny sposób, przy użyciu loginu i hasła. Najszybciej i najłatwiej jest wykorzystać dane logowania i odpowiednie polecenie z poziomu linii komend. Wystarczy więc tylko, że wpiszesz:

ssh-copy-id login@host.przyklad.pl

Twój komputer połączy się ze wskazanym hostem, poprosi Cię (po raz ostatni) o hasło, a po zalogowaniu sam umieści Twój klucz publiczny w odpowiednim miejscu na serwerze do którego się logujesz.

Alternatywnym (i nieco bardziej skomplikowanym) sposobem jest samodzielne wskazanie klucza. Wtedy natomiast też musisz podać login i hasło. Dodatkowo jeszcze wpisz adres serwera docelowego i konkretny folder. Robisz to przy użyciu następującego polecenia:

cat lokalizacja_pliku/ssh/id_rsa.pub | ssh login@host.pl "cat >> ~/.ssh/authorized_keys"

Użyty znak „>>” oznacza, że wskazany plik zostanie dodany do konkretnego folderu. Jeśli w przyszłości będą dopisywane w nim kolejne klucze, nie będą one siebie zastępowały. Ich lista po prostu będzie się wydłużać. Więcej urządzeń dysponujących odpowiednimi kluczami prywatnymi nawiąże połączenie z serwerem bez użycia hasła i loginu.

Alternatywnym rozwiązaniem jest samodzielne otworzenie folderu z autoryzowanymi kluczami, np. przy użyciu nano. Następnie należy ręcznie umieścić w nim wartość klucza. Poniższe kroki opisują całą procedurę. Postępuj zgodnie z nimi.

  1. Zaloguj się na serwer.
  2. Otwórz folder, wpisując komendę nano .ssh/authorized_keys.
  3. W nowej linii dodaj swój klucz publiczny SSH.
  4. Zapisz zmiany w pliku (naciśnij Ctrl+x, potem y i Enter).

Gdy klucz publiczny znajdzie się na naszym serwerze, a na urządzeniu będzie prywatny, możesz się zalogować. Wystarczy tylko, że wpiszesz komendę:

ssh login@host.pl

Jeśli podczas generowania klucza ustalisz hasło zabezpieczające, musisz je podać przy pierwszym logowaniu. Zostanie ono zapamiętane, więc później już nie będzie trzeba go wpisywać.