Czym jest publiczny klucz SSH?

Publiczny klucz SSH to jedna połowa kryptograficznej pary kluczy używanej do bezpiecznego uwierzytelniania za pośrednictwem protokołu SSH (Secure Shell). Podczas generowania pary kluczy SSH otrzymujesz klucz prywatny (przechowywany w tajemnicy na Twoim urządzeniu) oraz klucz publiczny (udostępniany serwerom, do których chcesz uzyskać dostęp). Serwer używa Twojego klucza publicznego do weryfikacji tożsamości bez przesyłania hasła.

Publiczne klucze SSH są przechowywane jako pojedyncza linia tekstu w formacie OpenSSH i zawierają trzy części: typ klucza (np. ssh-rsa lub ssh-ed25519), dane klucza zakodowane w Base64 oraz opcjonalny komentarz (zazwyczaj user@hostname). Wewnątrz danych Base64 zawarte są ustrukturyzowane informacje binarne, w tym parametry algorytmu i właściwy materiał kryptograficzny.

Odciski palców (fingerprints) to krótkie, czytelne dla człowieka skróty danych klucza. Ułatwiają weryfikację i porównywanie kluczy bez konieczności odczytywania pełnego ciągu Base64. Dwa najpopularniejsze formaty odcisków palców to SHA-256 (nowoczesny domyślny format) oraz MD5 (starszy format z parami szesnastkowymi oddzielonymi dwukropkami).

Opis narzędzia

To narzędzie analizuje publiczne klucze SSH w formacie OpenSSH i wyodrębnia wszystkie istotne metadane. Wklej swój klucz publiczny i natychmiast sprawdź typ klucza, algorytm, rozmiar klucza w bitach, komentarz oraz odciski palców SHA-256 i MD5 — zgodnie z wynikiem polecenia ssh-keygen -l.

Przykłady

Dane wejściowe:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@laptop

Dane wyjściowe:

Pole Wartość
Typ klucza ssh-ed25519
Algorytm Ed25519
Rozmiar klucza 256 bitów
Komentarz user@laptop
Odcisk palca SHA-256 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
Odcisk palca MD5 MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48

Funkcje

  • Obsługuje typy kluczy RSA, Ed25519, ECDSA (P-256, P-384, P-521), DSA oraz Security Key (FIDO)
  • Oblicza odciski palców SHA-256 i MD5 w standardowym formacie OpenSSH
  • Wyodrębnia rozmiar klucza w bitach bezpośrednio z binarnych danych klucza
  • Weryfikuje strukturę klucza, w tym integralność Base64 i spójność wbudowanego typu
  • Analizuje opcjonalne pole komentarza z linii klucza publicznego

Jak to działa

Narzędzie dzieli dane wejściowe na trzy części: typ klucza, dane Base64 i komentarz. Następnie dekoduje dane Base64 do postaci binarnej i odczytuje wewnętrzną strukturę przy użyciu formatu SSH z prefiksem długości, gdzie każde pole rozpoczyna się 4-bajtową długością w formacie big-endian, po której następują dane pola. Rozmiar klucza jest określany na podstawie parametrów specyficznych dla algorytmu — dla RSA jest to długość bitowa modułu n, dla DSA jest to liczba pierwsza p, a dla kluczy krzywych eliptycznych jest wyprowadzana z nazwy krzywej. Odciski palców są obliczane przez haszowanie surowych binarnych danych klucza algorytmami SHA-256 i MD5.

Obsługiwane typy kluczy

Identyfikator typu Algorytm
ssh-rsa RSA
ssh-ed25519 Ed25519
ecdsa-sha2-nistp256 ECDSA (P-256)
ecdsa-sha2-nistp384 ECDSA (P-384)
ecdsa-sha2-nistp521 ECDSA (P-521)
ssh-dss DSA
sk-ssh-ed25519@openssh.com Ed25519-SK (Security Key)
sk-ecdsa-sha2-nistp256@openssh.com ECDSA-SK (Security Key)

Przypadki użycia

  • Weryfikacja odcisków palców kluczy — Potwierdź, że klucz publiczny odpowiada oczekiwanemu odciskowi palca przed dodaniem go do pliku authorized_keys lub usługi hostingu Git
  • Audyt dostępu do serwera — Szybko zidentyfikuj algorytm i rozmiar kluczy w pliku authorized_keys, aby wykryć słabe lub przestarzałe klucze
  • Debugowanie problemów z SSH — Sprawdź, czy klucz ma prawidłowy format, używa oczekiwanego algorytmu i posiada poprawną strukturę

FAQ

Gdzie znajdę mój publiczny klucz SSH? W większości systemów jest przechowywany pod ścieżką ~/.ssh/id_ed25519.pub, ~/.ssh/id_rsa.pub lub podobną, w zależności od algorytmu. Możesz również uruchomić polecenie ssh-add -L, aby wyświetlić klucze załadowane do agenta SSH.

Czy udostępnianie klucza publicznego jest bezpieczne? Tak. Klucz publiczny jest przeznaczony do udostępniania. Nie można go użyć do wyprowadzenia klucza prywatnego ani do uwierzytelnienia w Twoim imieniu.

Dlaczego odciski palców SHA-256 i MD5 wyglądają inaczej? Odciski palców SHA-256 są kodowane w Base64 i poprzedzone prefiksem SHA256:, natomiast odciski palców MD5 używają par szesnastkowych oddzielonych dwukropkami z prefiksem MD5:. SHA-256 jest domyślnym formatem w nowoczesnych wersjach OpenSSH.