Jak wygenerować klucze SSH na Windows?

Do czego służy SSH ?

SSH (Secure Shell) wykorzystuje kryptografię asymetryczną, czyli mechanizm oparty na dwóch powiązanych ze sobą kluczach: publicznym i prywatnym.
Każdy z nich ma swoją konkretną rolę:

  • Klucz publiczny – może być bezpiecznie udostępniany. Umieszcza się go na serwerze, z którym chcesz się łączyć.
  • Klucz prywatny – pozostaje wyłącznie na Twoim komputerze i nigdy nie powinien być przekazywany dalej ani wysyłany przez sieć.

Podczas łączenia się z serwerem SSH:

  1. Serwer sprawdza, czy posiada Twój klucz publiczny.
  2. Wysyła do Twojego klienta SSH wyzwanie (challenge), które można poprawnie odszyfrować tylko przy użyciu odpowiadającego mu klucza prywatnego.
  3. Klient SSH wykonuje operację kryptograficzną z użyciem klucza prywatnego i odsyła wynik.
  4. Jeśli wynik jest poprawny, serwer potwierdza tożsamość użytkownika – logowanie odbywa się bez konieczności wpisywania hasła.

Dzięki temu procesowi uwierzytelnianie jest znacznie bezpieczniejsze niż tradycyjne logowanie hasłem:

  • klucz prywatny nigdy nie opuszcza Twojego komputera,
  • nawet jeśli ktoś przechwyci ruch sieciowy, nie uzyska dostępu do serwera,
  • można łatwo ograniczać dostęp, usuwając lub dodając klucze publiczne po stronie serwera.

W praktyce oznacza to, że dostęp w SSH opiera się na unikalnej parze kluczy – publicznym i prywatnym, które wspólnie potwierdzają, że masz uprawnienia do połączenia z serwerem.

Jak wygenerować klucze SSH na Windows?

Jeśli potrzebujesz utworzyć klucze SSH na Windowsie, możesz użyć do tego aplikacji PuTTYgen (do pobrania tu: https://www.puttygen.com/ ). Po otwarciu programu wybierz rodzaj i długość klucza. Wygeneruj klucze wciskając przycisk ‘Generate’.

Podczas generowania kluczy możesz ruszać myszką, aby generowane klucze były ‘bardziej losowe’ – program poinformuje Cię o tym za pomocą komunikatu: ‘Please generate samo randomness by moving the mouse over the blank area’.

Możesz podać hasło dla klucza, wpisując je w pole „Key passphrase” i „Confirm  passphrase”.

Teraz zapisz oba klucze klikając w „Save public key” i „Save private key” – pamiętaj, by zapisać klucz prywatny z końcówką .ppk (PuTTY private key), jeśli zamierzasz łączyć się z serwerem poprzez program PuTTY, a klucz publiczny z rozszerzeniem .pub, np.:

  • my_key_ed25519.ppk – klucz prywatny
  • my_key_ed25519.pub – klucz publiczny

Dobrze jest też w nazwie zawrzeć rodzaj klucza oraz jego przeznaczenie, ponieważ po pewnym czasie nie będziesz już pamiętać, jakiego algorytmu szyfrowania użyłeś/aś ani do czego dany klucz ma służyć (szczególnie, jeśli posiadasz więcej kluczy na swoim komputerze).