Praktyka IT

Algorytmy w SSH: z czego składa się bezpieczeństwo połączenia?

11 marca 2026 · 7 min czytania


SSH (Secure Shell) to nie jeden algorytm — to zestaw uzgodnionych mechanizmów kryptograficznych, które razem zapewniają:

  • Poufność — szyfrowanie ruchu
  • Integralność — ochrona przed modyfikacją danych w transmisji
  • Uwierzytelnienie serwera — i często użytkownika
  • Perfect Forward Secrecy (PFS) — odporność na ujawnienie klucza długoterminowego w przyszłości

Przy każdym połączeniu klient i serwer negocjują cztery grupy algorytmów:

  • KEX — wymiana kluczy i uzgodnienie sekretu sesyjnego
  • Host Key — weryfikacja tożsamości serwera
  • Ciphers — szyfrowanie danych (poufność)
  • MAC lub AEAD — integralność i uwierzytelnienie pakietów

Poniżej praktyczny przewodnik: co rozumieć, co wybierać, czego unikać.

1. KEX — wymiana kluczy (najważniejsza część negocjacji)

KEX odpowiada za uzgodnienie wspólnego sekretu sesyjnego. Współcześnie dominuje ECDH i Curve25519.

Co wybierać

  • curve25519-sha256 — najlepszy domyślny wybór w 2026
  • ecdh-sha2-nistp256 / ecdh-sha2-nistp384 / ecdh-sha2-nistp521 — nadal akceptowalne

Czego unikać

  • diffie-hellman-group1-sha1 — przestarzały, tylko 1024-bit
  • diffie-hellman-group14-sha1 — SHA-1, wycofany
  • diffie-hellman-group-exchange-sha1 — SHA-1

Jeśli masz środowiska legacy wymagające starych algorytmów DH — potraktuj to jako techniczny dług i zaplanuj migrację z konkretnym terminem.

2. Host Key — jak klient weryfikuje serwer

Host Key to klucz długoterminowy serwera. To on odpowiada za komunikat, który widziałeś pewnie setki razy:

The authenticity of host '...' can't be established.

Klient porównuje klucz serwera z zapisanym w known_hosts. Jeśli klucz się zmieni — dostaniesz ostrzeżenie. To może oznaczać atak MITM, ale też normalną rotację kluczy lub reinstalację serwera. W każdym przypadku warto wiedzieć dlaczego.

Co wybierać

  • ssh-ed25519 — nowoczesny, szybki, najlepszy domyślny wybór
  • rsa-sha2-512 / rsa-sha2-256 — akceptowalne dla kompatybilności wstecznej

Czego unikać

  • ssh-rsa (RSA + SHA-1) — przestarzałe przez SHA-1, wyłączone domyślnie w nowszych OpenSSH
  • DSA — nie powinno istnieć w aktywnych środowiskach

3. Ciphers — poufność danych w kanale

Najlepsza praktyka to AEAD (Authenticated Encryption with Associated Data) — łączy poufność i integralność w jednym algorytmie.

Polecane (AEAD)

  • chacha20-poly1305@openssh.com
  • aes256-gcm@openssh.com
  • aes128-gcm@openssh.com

Akceptowalne, ale wymagają osobnego MAC

  • aes256-ctr
  • aes128-ctr

Unikaj bezwzględnie

  • Tryb CBC (np. aes256-cbc) — podatny na ataki padding oracle
  • 3DES — przestarzały

4. MAC vs AEAD — integralność pakietów

Jeśli używasz GCM lub ChaCha20-Poly1305, integralność jest wbudowana — osobny MAC nie jest potrzebny. Jeśli używasz trybu CTR — potrzebujesz zewnętrznego MAC.

Co wybierać (gdy MAC jest potrzebny)

  • hmac-sha2-256
  • hmac-sha2-512

Czego unikać

  • hmac-sha1 — SHA-1
  • umac-64 — za krótki tag (64-bit)

Jak sprawdzić, co jest używane u Ciebie

Jakie algorytmy wspiera Twój klient OpenSSH

ssh -Q kex
ssh -Q key
ssh -Q cipher
ssh -Q mac

Co faktycznie negocjuje się na połączeniu

ssh -vvv user@host

W logu zobaczysz dokładnie wybrane: KEX, host key algorithm, cipher, MAC/AEAD. Szukaj linii zaczynających się od kex: server->client i kex: client->server.

Bezpieczna konfiguracja bazowa dla OpenSSH (serwer)

Plik /etc/ssh/sshd_config:

KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512,hmac-sha2-256

# Ogranicz powierzchnię ataku
PasswordAuthentication no
PermitRootLogin no

Zanim wdrożysz — trzy zasady:

  1. Nie kopiuj "na ślepo" — najpierw sprawdź kompatybilność wszystkich klientów w środowisku.
  2. Po zmianach zawsze wykonaj sshd -t (test konfiguracji bez restartu).
  3. Przetestuj nowe połączenie w osobnej sesji zanim zamkniesz obecną — żeby nie zablokować się na serwerze.

TL;DR — zapamiętaj cztery rzeczy

Kategoria Wybierz Usuń
KEX curve25519-sha256 SHA-1, group1, group14
Host Key ssh-ed25519 ssh-rsa, DSA
Cipher chacha20-poly1305, AES-GCM CBC, 3DES
MAC hmac-sha2-256/512 hmac-sha1, umac-64

Dobra kryptografia w SSH to fundament — ale równie ważne są polityki dostępu, hardening sshd_config i obserwowalność: logi, alerty, kontrola zmian.

W praktyce to dobrze działa razem z wdrożeniu MFA oraz regularnym przeglądem konfiguracji i audytu bezpieczeństwa.

Chcesz wiedzieć jak to wygląda w Twojej organizacji?

W 6 krokach sprawdzisz poziom ryzyka i zobaczysz, co domknąć jako pierwsze.

→ Sprawdź swój poziom ryzyka NIS2

Przeczytaj również