0Pricing
Cryptology Academy · Lekcja

Uzgadnianie SSH i uwierzytelnianie kluczem hosta

Proszę prześledzić uzgadnianie SSH-2: wymianę wersji, negocjację algorytmów, wymianę kluczy i uwierzytelnianie usług.

Uzgadnianie SSH i uwierzytelnianie kluczem hosta to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Połączenie TCP na porcie 22

SSH rozpoczyna się od połączenia TCP z portem 22. Po jego ustanowieniu klient i serwer wymieniają ciągi wersji, takie jak SSH-2.0-OpenSSH_9.3, które identyfikują wersję protokołu i implementację. Ta wymiana wersji pozwala obu stronom potwierdzić zgodność przed przejściem dalej.

Faza negocjacji algorytmów

Po wymianie wersji obie strony wysyłają pakiety SSH_MSG_KEXINIT zawierające listy obsługiwanych algorytmów. Listy te obejmują metody wymiany kluczy, typy kluczy hosta, szyfry symetryczne, algorytmy MAC i kompresję. Część wspólna obu list określa algorytmy wybrane dla sesji.

Wymiana kluczy Diffiego-Hellmana i ECDH

Klucz sesji jest ustanawiany za pomocą algorytmu wymiany kluczy, takiego jak Diffie-Hellman lub ECDH. Klient i serwer generują efemeryczne pary kluczy, wymieniają wartości publiczne i niezależnie obliczają ten sam wspólny sekret. Ten wspólny sekret służy jako podstawa wyprowadzania klucza sesji, ale nigdy nie jest przesyłany bezpośrednio.

Uwierzytelnianie serwera kluczem hosta

Serwer potwierdza swoją tożsamość, podpisując skrót wymiany kluczy za pomocą prywatnego klucza hosta. Klucz hosta może być kluczem RSA, ECDSA albo nowoczesnym kluczem Ed25519. Klient używa odpowiadającego mu klucza publicznego do weryfikacji tego podpisu, potwierdzając, że komunikuje się z prawdziwym serwerem, a nie z oszustem.

Zaufanie przy pierwszym użyciu (TOFU)

Przy pierwszym połączeniu z nowym serwerem klient nie zna jeszcze publicznego klucza hosta. SSH wyświetla odcisk klucza i prosi użytkownika o jego zaakceptowanie. Model Trust On First Use przechowuje klucz w known_hosts i wykrywa zmiany przy kolejnych połączeniach, ostrzegając o możliwych atakach typu man-in-the-middle.

Weryfikacja odcisku klucza hosta

Najbezpieczniejszym sposobem weryfikacji nowego klucza hosta serwera jest użycie niezależnego kanału. Administrator może odczytać odcisk klucza osobiście lub za pośrednictwem zweryfikowanego bezpiecznego kanału, a następnie porównać go z odciskiem wyświetlanym przez klienta SSH. Zapobiega to cichemu zaakceptowaniu fałszywego klucza przy pierwszym połączeniu.

Struktura pliku known_hosts

Plik known_hosts przechowuje wiersze w postaci: hostname algorithm base64-key comment. Każdy wpis reprezentuje zaufaną tożsamość serwera. Podczas łączenia z hostem znajdującym się już w known_hosts SSH sprawdza, czy przedstawiony klucz odpowiada zapisanemu, i odrzuca połączenie w przypadku niezgodności.

Wyprowadzanie kluczy sesji

Po wymianie kluczy obie strony niezależnie wyprowadzają klucze sesji na podstawie wspólnego sekretu, skrótu wymiany i identyfikatora sesji. Osobne klucze są wyprowadzane dla każdego kierunku komunikacji oraz oddzielnie na potrzeby szyfrowania i operacji MAC. Oznacza to, że klucze używane do ruchu od klienta do serwera różnią się od kluczy używanych do ruchu od serwera do klienta.

Faza szyfrowanej komunikacji

Po ustanowieniu kluczy sesji cała dalsza komunikacja SSH jest szyfrowana i uwierzytelniana. Wynegocjowany szyfr, taki jak AES-256-GCM lub ChaCha20-Poly1305, zapewnia poufność, a algorytm MAC gwarantuje integralność. Nawet nazwa użytkownika i dane uwierzytelniające są przesyłane wewnątrz tego zaszyfrowanego tunelu.

Porównanie typów kluczy hosta SSH

Klucze hosta RSA o długości 2048 lub 4096 bitów są szeroko obsługiwane, ale działają wolniej. Klucze ECDSA oparte na krzywych NIST są szybsze, lecz niektórzy nie ufają parametrom krzywych NIST. Klucze Ed25519 oparte na Curve25519 są obecnie zalecane: są niewielkie, szybkie, zapewniają wysoki poziom bezpieczeństwa i nie zależą od parametrów krzywych NIST. Większość nowoczesnych serwerów SSH domyślnie oferuje Ed25519.

Podsumowanie ustanawiania sesji

Uzgadnianie SSH obejmuje: nawiązanie połączenia TCP, wymianę wersji, negocjację algorytmów, wymianę kluczy ustanawiającą klucze sesji, weryfikację klucza hosta serwera oraz uwierzytelnianie użytkownika. Wszystkie kroki po wymianie wersji odbywają się w zaszyfrowanym kanale chronionym przed naruszeniem integralności, ustanowionym podczas fazy wymiany kluczy.

Sprawdzanie klucza hosta

Jak klient weryfikuje klucz hosta serwera SSH przy kolejnych połączeniach po pierwszym połączeniu?

Podsumowanie uzgadniania SSH

W tej lekcji: połączenie TCP jest nawiązywane na porcie 22, następuje wymiana ciągów wersji, negocjacja algorytmów wybiera szyfry i metody wymiany kluczy, ECDH lub DH ustanawia wspólny sekret, klucze sesji są wyprowadzane osobno dla każdego kierunku, serwer uwierzytelnia się za pomocą podpisu klucza hosta, a klient weryfikuje go względem known_hosts, korzystając z modelu TOFU przy pierwszym połączeniu.

Często zadawane pytania

Czy lekcja „Uzgadnianie SSH i uwierzytelnianie kluczem hosta” jest bezpłatna?

Tak — pełny tekst „Uzgadnianie SSH i uwierzytelnianie kluczem hosta” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Uzgadnianie SSH i uwierzytelnianie kluczem hosta”?

Proszę prześledzić uzgadnianie SSH-2: wymianę wersji, negocjację algorytmów, wymianę kluczy i uwierzytelnianie usług. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Uzgadnianie SSH i uwierzytelnianie kluczem hosta”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Uzgadnianie SSH i uwierzytelnianie kluczem hosta
  2. Uwierzytelnianie kluczem publicznym i przekazywanie agenta
  3. Tunelowanie SSH i techniki przekierowywania portów
  4. Hartowanie SSH i najlepsze praktyki audytowe
← Powrót do Cryptology Academy