SSH: jak poprawnie utworzyć klucz prywatny i publiczny za pomocą PuTTYgen?

Używając SSH warto zmienić sposób autentykacji i zastąpić popularne sposób oparty o login i hasło na parę kluczy – prywatny i publiczny. Zmiana taka pozytywnie wpływa na poziom bezpieczeństwa Twojego systemu. W przypadku gdy używasz loginu i hasła, a Twój system wystawiony jest bezpośrednio do Internetu (nie jest to zalecane), znacząco wzrasta prawdopodobieństwo że ktoś za pomocą metody brute-force będzie w stanie przełamać zabezpieczenia.

Krok pierwszy: wygeneruj parę kluczy za pomocą PuTTYgen

Poniżej przedstawiam jak krok po kroku wygenerować parę – klucz publiczny i klucz prywatny, na komputerze z systemem Windows. Zacznij od pobrania i uruchomienia narzędzia PuTTYgen.

Wykonaj kroki zgodnie z kolejnością na poniższym screen

  1. Wybierz typ klucza w polu Type of key to generate (co najmniej RSA, zalecane ECDSA, EdDSA, unikaj SSH-1 (RSA))
  2. Podaj długość klucza (2048 bitów jako minimum) w polu Number of bits in generated key
  3. Rozpocznij generowanie klucza poprzez kliknięcie w przycisk Generate
PuTTYgen opis opcji które należy uwzględnić przy generowaniu pary kluczy.

4. Wygeneruj klucz, poruszając myszką w polu Key

PuTTYgen generowanie klucza.

5. Dodaj komentarz żeby łatwo identyfikować klucze
Jeśli dbasz o bezpieczeństwo nie używaj jednego klucza do wszystkich maszyn. To identyczna zasada jak w kwestii haseł – nie używaj jednego hasła do wszystkich kont, serwisów czy usług.

6. Opcjonalnie możesz dodać hasło,które zabezpieczy Twój klucz prywatny. Zalecam wykonanie tego kroku, ale pamiętaj że przy każdym użyciu klucza prywatnego będziesz zmuszony podać hasło.

PuTTYgen kolejne kroki generowania pary kluczy z miejscem gdzie można wpisać komentarz i hasło zabezpieczające klucz prywatny.

7. Zapisz klucz publiczny za pomocą przycisku Save public key

Przykład zapisania na dysku klucza publicznego.

8. Zapisz klucz prywatny za pomocą przycisku Save private key
Ważna uwaga! Zapisz plik w lokalizacji do której nikt inny nie ma dostępu. Jeśli ktoś inny ma dostęp do klucza prywatnego należy uznać że taki klucz nie zapewni już bezpieczeństwa i trzeba zastąpić go nowym kluczem. Przy zapisywaniu klucza zostaniesz zapytany czy na pewno nie chcesz nadać hasła jeśli nie wpisałeś go w punkcie nr. 6.
Pamiętaj też że w momencie utraty klucza, oraz braku możliwości logowania do SSH za pomocą loginu i hasła możesz stracić na zawsze dostęp do systemu.

Przykład zapiania klucza prywatnego.

Krok drugi: dodaj klucz publiczny do serwera

Przyjąłem założenie że już masz dostęp do serwera za pomocą SSH i logowania opartego o login i hasło.
W takim scenariuszu wykonaj poniższe korki:

Zaloguj się do serwera i wykonaj polecenia wskazane poniżej.

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys
echo KLUCZ_PUBLICZNY >> ~/.ssh/authorized_keys

W miejscu tekstu KLUCZ_PUBLICZNY wstaw cały tekst przekopiowany z PuTTYgen:

PuTTYgen na górze znajduje się wygenerowany klucz publiczny który należy umieścić w konfiguracji SSH.

Pamiętaj że klucz publiczny wpisujesz w konfigurację SSH dla konkretnego użytkownika. Mając klucz prywatny zalogujesz się tylko na tego użytkownika który ma zdefiniowany pasujący klucz publiczny.

Krok trzeci: przetestuj dostęp

W tym kroku skonfigurujesz swoje PuTTY tak żeby wykorzystać wygenerowany wcześniej kluczy prywatny do połączenia się z systemem zdalnym poprzez SSH.

W menu po lewej stronie wybierz odpowiednio SSH>>Auth>>Credentials i w polu Private key file for authentication podaj ścieżkę do pliku z kluczem prywatnym.

Konfiguracja PuTTY i dodanie klucza prywatnego do konfiguracji.

Następnie wróć w menu na pole Session i podaj niezbędne dane odnośnie logowania takie jak nazwa hosta lub IP, port. Możesz też zapamiętać tak skonfigurowaną sesję na przyszłość.

Udane logowanie wygląda tak jak poniżej. Wystarczy podać nazwę użytkownika.

Poprawne zalogowanie do maszyny poprzez SSH za pomocą klucza prywatnego wygenerowanego w PuTTYgen.

Krok czwarty: zmiana zasad logowania

To definitywny krok w tym procesie który podniesie bezpieczeństwo Twojego systemu. Ale w niektórych przypadkach może okazać się że przysporzy to problemów, ponieważ możesz stracić dostęp. Dlatego pamiętaj – najpierw sprawdź czy działa Ci poprawnie logowanie za pomocą kluczy. Dopiero później możesz zmodyfikować konfigurację SSH tak żeby zablokować możliwość logowania za pomocą loginu i hasła. Jeśli zrobisz to w złym momencie, bez potwierdzenia że działa logowanie za pomocą kluczy, stracisz dostęp do systemu. Implementacja może różnić się w zależności od dystrubucji systemu Linux. Poniżej kod kroki dla systemu Ubuntu 20.04 LTS.

Poniżej kod który musisz wykonać żeby zablokować logowanie za pomocą loginu i hasła. Będą potrzebne uprawnienia administracyjne.

sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config.d/50-cloud-init.conf
sudo systemctl restart sshd.service

Teraz możliwe będzie zalogowanie tylko przy pomocy kluczy.

Podsumowanie

Przedstawiłem Ci krok po kroku jak przygotować się do zmiany zasad logowania przez SSH tak żeby zwiększyć bezpieczeństwo wykorzystywanych przez Ciebie systemów informatycznych. To tylko sugestia, każdy indywidualnie powinien zdecydować jak chce konfigurować zadany logowania w swoich maszynach.

Jeden komentarz do „SSH: jak poprawnie utworzyć klucz prywatny i publiczny za pomocą PuTTYgen?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *