Wygeneruj parę kluczy SSH lub RSA bez instalowania czegokolwiek
Ten generator tworzy nową parę kluczy Ed25519, ECDSA (P-256, P-384, P-521) lub RSA (2048, 3072, 4096 bitów) za pomocą Web Crypto API Twojej przeglądarki i eksportuje ją tak, jak potrzebujesz: klucz prywatny OpenSSH i wiersz <code>authorized_keys</code>, dokładnie takie, jakie utworzyłby <code>ssh-keygen</code>; pliki PEM PKCS#8 i SPKI dla OpenSSL, TLS i bibliotek JWT; publiczny JWK; oraz odcisk <code>SHA256:</code>. Klucze powstają na Twoim urządzeniu, a klucz prywatny nigdy nie opuszcza tej strony.
Jak wygenerować parę kluczy SSH
- 1Wybierz typ klucza: Ed25519 to nowoczesny domyślny wybór dla SSH; wybierz RSA dla starszych serwerów oraz kluczy podpisujących PEM lub JWT.
- 2Opcjonalnie wpisz komentarz, zwykle
user@host, aby później rozpoznać klucz wauthorized_keys. - 3Kliknij Generuj. Pobierz klucz prywatny jako
id_ed25519(lubid_rsa,id_ecdsa), a klucz publiczny pod tą samą nazwą z dopiskiem.pub. - 4Przenieś oba do
~/.ssh/, uruchomchmod 600 ~/.ssh/id_ed25519i dodaj wiersz klucza publicznego do~/.ssh/authorized_keysna serwerze lub do ustawień kluczy SSH w swoim serwisie Git.
Jaki typ klucza wybrać?
- Ed25519
- Mały (klucz publiczny ma 68 znaków), szybki i odporny na błędy implementacji. Obsługiwany przez OpenSSH 6.5 i nowsze, GitHub, GitLab i każdy współczesny serwer. Obecnie najlepszy wybór dla SSH.
- ECDSA (P-256, P-384, P-521)
- Krzywe NIST, potrzebne, gdy wymagają ich zasady zgodności lub gdy Ed25519 nie jest akceptowany, np. przez niektóre tokeny sprzętowe i chmurowe usługi kluczy.
- RSA
- Najszerzej kompatybilny, także z bardzo starymi serwerami SSH oraz wieloma bibliotekami TLS i JWT (RS256). Używaj co najmniej 3072 bitów dla kluczy, które mają służyć po 2030 roku; 2048 to minimum, które wciąż uznaje się za akceptowalne.
Formaty w skrócie
- Klucz prywatny OpenSSH
- <code>-----BEGIN OPENSSH PRIVATE KEY-----</code>, format, który <code>ssh-keygen</code> zapisuje domyślnie. Tutaj jest generowany bez szyfrowania; hasło dodasz później poleceniem <code>ssh-keygen -p -f id_ed25519</code>.
- Klucz publiczny OpenSSH
- Jeden wiersz, <code>ssh-ed25519 AAAA… comment</code>, dla <code>authorized_keys</code>, GitHub, GitLab i konsol chmurowych.
- Klucz prywatny PKCS#8 (PEM)
- <code>-----BEGIN PRIVATE KEY-----</code>, standardowy kontener odczytywany przez OpenSSL, Javę, Node.js, Go i większość bibliotek JWT dla każdego typu klucza.
- Klucz publiczny SPKI (PEM)
- <code>-----BEGIN PUBLIC KEY-----</code>, postać X.509 SubjectPublicKeyInfo używana do weryfikacji podpisów i w konfiguracji weryfikacji JWT.
- JWK
- Klucz publiczny w JSON (RFC 7517) z odciskiem <code>kid</code>, gotowy do opublikowania w endpoincie JWKS.
Odciski kluczy
Odcisk to skrót SHA-256 klucza publicznego w formacie wire SSH, zakodowany w Base64 bez dopełnienia: SHA256:…. To właśnie wyświetla ssh-keygen -lf id_ed25519.pub, to pokazuje GitHub obok każdego klucza i to widzisz, gdy SSH prosi o zaufanie nowemu hostowi. Porównanie odcisków pozwala sprawdzić, czy dwie kopie klucza publicznego to ten sam klucz.
Czy generowanie kluczy w przeglądarce jest bezpieczne?
Klucze pochodzą z crypto.subtle.generateKey, wbudowanej kryptografii przeglądarki, która korzysta z bezpiecznego generatora liczb losowych systemu operacyjnego, tego samego źródła, z którego korzysta ssh-keygen. Nic nie jest wysyłane przez sieć: możesz wczytać tę stronę, rozłączyć się i generować klucze offline.
W przypadku kluczy chroniących systemy produkcyjne najbezpieczniej nadal generować je na maszynie, która będzie ich używać, poleceniem ssh-keygen -t ed25519, albo na kluczu sprzętowym. To narzędzie świetnie sprawdza się w środowiskach testowych, kluczach wdrożeniowych CI, kluczach podpisujących JWT i na maszynach bez OpenSSH. Aby sprawdzić certyfikat oparty na takim kluczu, użyj dekodera certyfikatów.
Najczęstsze pytania
- Jak wygenerować klucz SSH online?
- Wybierz Ed25519, wpisz komentarz, np. swój e-mail, kliknij Generuj i pobierz klucz prywatny (id_ed25519) oraz publiczny (id_ed25519.pub). Umieść oba w ~/.ssh i dodaj wiersz z pliku .pub na serwerze lub w swoim serwisie Git.
- Czy Ed25519 jest lepszy od RSA?
- Dla SSH tak: klucze Ed25519 są znacznie krótsze, szybsze w użyciu i dają bezpieczeństwo porównywalne z RSA-3072. Wybieraj RSA tylko dla systemów, które nie obsługują Ed25519.
- Dlaczego Ed25519 jest niedostępny w mojej przeglądarce?
- Ed25519 trafił do Web Crypto API w Firefoksie 129, Safari 17 i Chrome 137. W starszej przeglądarce zaktualizuj ją albo wybierz ECDSA lub RSA.
- Czy mogę dodać hasło do klucza prywatnego?
- Klucz jest generowany bez hasła. Dodaj je na własnym komputerze poleceniem ssh-keygen -p -f ~/.ssh/id_ed25519, które zaszyfruje plik na miejscu.
- Jak przekonwertować klucz do formatu .ppk dla PuTTY?
- Otwórz PuTTYgen, wybierz Load, wskaż pobrany klucz prywatny OpenSSH i zapisz go jako klucz prywatny. PuTTYgen odczytuje format OpenSSH bezpośrednio.
- Który plik trafia na serwer?
- Tylko klucz publiczny, czyli jedyny wiersz pliku .pub, dopisany do ~/.ssh/authorized_keys. Klucz prywatny zostaje na Twoim komputerze i nigdy nie powinien być udostępniany.
- Dlaczego SSH twierdzi, że uprawnienia mojego klucza prywatnego są zbyt otwarte?
- SSH odrzuca klucze prywatne, które mogą odczytać inni użytkownicy. Uruchom chmod 600 na pliku klucza prywatnego i chmod 700 na katalogu ~/.ssh.
- Czy klucze są wysyłane na serwer?
- Nie. Generuje je Web Crypto API Twojej przeglądarki na tej stronie i istnieją tylko w pamięci, dopóki ich nie pobierzesz lub nie skopiujesz.