Archiwa tagu: putty

Generowanie kluczy SSH Ed25519 w PuTTY i konfiguracja na serwerach Linux/AIX

Klucze SSH to podstawa bezpiecznego połączenia z serwerami. Zaskakująco dużo osób nadal nie wykorzystuje tej możliwości lub generuje nadal klucze RSA. Tak więc ściągawka – jak wygenerować nowoczesną parę kluczy SSH Ed25519 w środowisku Windows przy użyciu PuTTY, a następnie skonfigurować je na zdalnym serwerze Linux lub AIX.

Ten tutorial pozwoli Ci całkowicie wyeliminować konieczność wpisywania hasła przy każdym logowaniu SSH, używając najnowocześniejszej technologii kryptograficznej.

Dlaczego Ed25519, a nie RSA?

Ed25519 to przyszłość SSH! Oto dlaczego warto porzucić RSA:

🚀 15x mniejszy klucz (68 vs 1024+ znaków)
Błyskawiczna generacja i weryfikacja
🛡️ Wyższe bezpieczeństwo przy mniejszym rozmiarze
🔒 Odporność na ataki timing i side-channel
Wspierany przez wszystkie nowoczesne systemy (OpenSSH 6.5+, 2014)

Porównanie kluczy:

# Ed25519 (nowoczesny)
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQs7X9f8Vk... szydell@laptop-2025

# RSA (przestarzały)  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDExample123VeryLongKeyHereAndItGoesOnAndOn... szydell@laptop-2025

1. Instalacja PuTTY i przygotowanie środowiska

Jeżeli jeszcze nie masz zainstalowanego PuTTY, pobierz pełny pakiet ze strony: https://www.putty.org/

Uwaga: Pobierz cały pakiet (MSI Installer, najpewniej 64bit), nie tylko putty.exe. Będziemy potrzebować dodatkowo PuTTYgen do generowania kluczy.

Po instalacji powinny być dostępne następujące programy:

  • PuTTY – klient SSH
  • PuTTYgen – generator kluczy
  • Pageant – agent kluczy SSH
  • PSCP/PSFTP – narzędzia do transferu plików

2. Generowanie pary kluczy Ed25519 w PuTTYgen

2.1 Uruchamianie PuTTYgen

Znajdź i uruchom PuTTYgen z menu Start lub z katalogu instalacji PuTTY.

2.2 Wybór typu klucza Ed25519

W głównym oknie PuTTYgen:

  1. W sekcji „Parameters” z dropdown menu „Type of key to generate” wybierz EdDSA
  2. W polu „Curve to use for generating this key” zostaw Ed25519 (domyślna opcja)
  3. Usuń/zignoruj wartość w polu „Number of bits” – Ed25519 ma stały rozmiar klucza (256 bitów, ale bezpieczeństwo jak RSA 4096!)
  4. Kliknij przycisk „Generate”

Dlaczego Ed25519? To najnowocześniejszy standard używany przez GitHub, GitLab i wszystkie wielkie firmy technologiczne. Oferuje maksymalne bezpieczeństwo przy minimalnym rozmiarze.

2.3 Generowanie entropii

Po kliknięciu „Generate” pojawi się pasek postępu, a PuTTYgen poprosi Cię o poruszanie myszką nad pustym obszarem okna.

Ed25519 generuje się błyskawicznie – wystarczy kilka sekund poruszania myszką!

2.4 Konfiguracja wygenerowanego klucza

Po zakończeniu generowania zobaczysz znacznie krótszy klucz publiczny – to normalne i właściwe dla Ed25519!

  1. Pole z kluczem publicznym
  2. Pole „Key comment” – wpisz tutaj opisową nazwę, np.: szydell@laptop-ed25519-2025
  3. Pole „Key passphrase” – wpisz tutaj silne hasło zabezpieczające klucz prywatny lub nie wpisuj, jeżeli nie chcesz podawać hasła do klucza przy logowaniu (mniej bezpieczna opcja).

Przykład komentarza: Użyj opisowej nazwy jak szydell@laptop-ed25519-2025 – pozwoli Ci to łatwo identyfikować klucze w przyszłości.

2.5 Zapisywanie kluczy

To jest kluczowy moment – zapisz oba klucze!

  1. Kliknij „Save public key” i zapisz jako id_ed25519.pub
  2. Kliknij „Save private key” i zapisz jako id_ed25519.ppk

Uwaga: PuTTY zapisuje klucze prywatne w formacie .ppk (PuTTY Private Key), który jest specyficzny dla tego narzędzia.

  1. BONUS: Zaznacz i skopiuj cały tekst z górnego pola (klucz publiczny) – przyda się za chwilę!

Przykład tego, co skopiujesz:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQs7X9f8VkqZU5b2Pk8... szydell@laptop-ed25519-2024

3. Sprawdzenie kompatybilności serwera

Zanim przejdziemy dalej, sprawdźmy czy Twój serwer obsługuje Ed25519:

3.1 Sprawdzenie wersji SSH

Zaloguj się na serwer przez PuTTY (jeszcze hasłem) i wykonaj:

# Sprawdź wersję OpenSSH
ssh -V

# Sprawdź dostępne algorytmy kluczy
ssh -Q key

Ed25519 jest obsługiwany od:
OpenSSH 6.5+ (2014) – praktycznie wszystkie nowoczesne systemy
Linux: wszystkie aktualne dystrybucje
AIX 7.2+ z najnowszymi aktualizacjami
Stare systemy: jeśli masz OpenSSH starszy niż 6.5, użyj ECDSA P-256

Jeśli widzisz ssh-ed25519 na liście – jest dobrze! 🎉

4. Kopiowanie klucza publicznego na serwer docelowy

4.1 Logowanie na serwer przez PuTTY

Uruchom PuTTY i zaloguj się na swój serwer Linux/AIX przy użyciu hasła (jeszcze ostatni raz! 😉).

4.2 Tworzenie katalogu .ssh (jeśli nie istnieje)

# Sprawdź czy katalog .ssh istnieje
ls -la ~/.ssh

# Jeśli nie istnieje, stwórz go
mkdir ~/.ssh

# Ustaw odpowiednie uprawnienia (BARDZO WAŻNE!)
chmod 700 ~/.ssh

Dlaczego 700? Katalog .ssh może być dostępny tylko dla właściciela. Inne uprawnienia to poważny problem bezpieczeństwa.

4.3 Dodawanie klucza publicznego do authorized_keys

Teraz dodamy Twój klucz Ed25519 do pliku authorized_keys:

# Przejdź do katalogu .ssh
cd ~/.ssh

# Stwórz/edytuj plik authorized_keys
vi authorized_keys

4.4 Wklejanie klucza publicznego Ed25519

W edytorze:

  1. Wklej skopiowany wcześniej klucz publiczny (powinien zaczynać się od ssh-ed25519 AAAAC3NzaC1lZDI1NTE5...)
  2. Jeden klucz = jedna linia – Ed25519 jest krótki, więc łatwo się mieści
  3. Zapisz i zamknij plik

Przykład zawartości pliku authorized_keys z kluczem Ed25519:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQs7X9f8VkqZU5b2Pk8qJ3... szydell@laptop-ed25519-2024

4.5 Ustawianie uprawnień do pliku authorized_keys

To jest krytyczne dla bezpieczeństwa:

# Ustaw uprawnienia do odczytu tylko dla właściciela
chmod 600 ~/.ssh/authorized_keys

# Sprawdź poprawność uprawnień
ls -la ~/.ssh/

Serwer powinien zwrócić coś takiego:

drwx------ 2 szydell szydell 4096 Dec 15 10:30 .
drwxr-xr-x 3 szydell szydell 4096 Dec 15 10:29 ..
-rw------- 1 szydell szydell  98 Dec 15 10:30 authorized_keys

5. Konfiguracja PuTTY do używania klucza Ed25519

5.1 Konfiguracja połączenia w PuTTY

  1. Uruchom PuTTY
  2. W polu „Host Name” wpisz adres swojego serwera
  3. W lewym menu rozwiń „Connection”„SSH”„Auth”„Credentials”

5.2 Wskazanie klucza prywatnego Ed25519

W sekcji „Authentication parameters”:

  1. Kliknij „Browse…” obok pola „Private key file for authentication”
  2. Wybierz zapisany wcześniej plik id_ed25519.ppk
  3. Ważne: Upewnij się, że widzisz ścieżkę do pliku w polu tekstowym

5.3 Zapisanie sesji

Żeby nie konfigurować tego za każdym razem:

  1. Wróć do „Session” w lewym menu
  2. W polu „Saved Sessions” wpisz nazwę, np. moj-serwer-ed25519
  3. Kliknij „Save”

6. Połączenie z kluczem Ed25519

  1. Kliknij „Open” w PuTTY
  2. System powinien zapytać o passphrase do klucza prywatnego (nie hasło użytkownika!), lub nie pytać w ogóle jeżeli hasło nie zostało ustawione.
  3. Po wpisaniu passphrase powinno nastąpić zalogowanie bez podawania hasła użytkownika

Zdalna edycja kodu

Zazwyczaj pracuję na Windowsie. A piszę programiki i skrypty stricte dla Linuxa.
VIMa kocham niezmiernie, ale są fajniejsze zabawki do takiej pracy. Na przykład Visual Studio Code, które mi wyjątkowo podpasowało.
VSCode ma fajną wtyczkę, dzięki której można po ssh edytować pliki na zdalnej maszynie 'w locie’. Nie jest to może najwygodniejsza w konfiguracji metoda, ale z pomocą putty da się ogarnąć temat dość prosto 🙂
Wtyczka korzysta z rmate. Najrozsądniejsza wydaje mi się implementacja w bashu (ale jak ktoś lubi to jest też w RUBY, Pythonie, C i pewnie w kilku innych językach)

  1. Zainstaluj w VSCode dodatek Remote VSCode:
    ctrl+p wklej ext install remote-vscode
  2. Na zdalnej maszynie instalujemy 'rmate’:
    sudo wget -O /usr/local/bin/rmate https://raw.github.com/aurora/rmate/master/rmate
    chmod a+x /usr/local/bin/rmate

    Wydaje mi się, że można bez żadnego uszczerbku na fajności, zaciągnąć sobie skrypt na lokalnego usera. System wide nie powinno być konieczne (aczkolwiek nie testowałem).
  3. Zestaw w putty tunel do maszyny na której chcesz edytować pliki. 'Główna’ strona standardowo, natomiast Connection->SSH->Tunnels ustaw tak:
  4. CTRL-C „Remote: Start server”, następnie w VSCode -> Naciśnij F1, wklej i ENTER
  5. Na zdalnej maszynie wydaj komendę 'rmate <plik_do_edycji>’. Pliczek powinien się automagicznie otworzyć w VSCode

W codziennej pracy odpalamy tylko punkty 3,4,5.

Plusy? Chyba widać. Da się ładnie edytować zdalnie zlokalizowane pliki 'on-line’.

Minusy? Jeszcze nie rozgryzłem jak odpalać zdalnie zabawki typu golint. Na razie walidacja kodu robi mi się w pełni lokalnie (a to mi się nie do końca podoba).