ssh-keygen nie tworzy klucza prywatnego RSA


70

Próbuję utworzyć klucz prywatny i mam problem.

Kiedy używam ssh-keygen -t rsa -b 4096 -C "your_email@example.com", otrzymuję klucz prywatny w następującym formacie.

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

Nie jest to akceptowane w przypadku aplikacji, której próbuję użyć.

Oczekuję klucza w następującym formacie RSA.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

Jak utworzyć poprawny format? To dziwne, ponieważ każdy inny Mac, który mam, tworzy poprawny format, z wyjątkiem tego, z którym mam problem.

Jestem na świeżo zainstalowanym Mac OS Mojave


a innych komputerów Mac nie ma w Mojave? Jestem też w Mojave i otrzymuję „nowy” format klucza openssh. Zakładam, że inne komputery Mac są w niższych wersjach. Sprawdź używaną wersję OpenSSL.
Zina

@Zina inne komputery Mac są również dostępne w Mojave i mają tę samą wersję OpenSSL.
Księżyc

RSA powinien być domyślnym typem. Co jeśli -t rsacałkowicie pominiesz tę opcję?
guzzijason

@guzzijason to samo. To doprowadza mnie do szału. Nawet jeśli pominę -t rsa na moim komputerze Mac (działającym), to poprawnie generuje RSA.
Księżyc

Miałem ten sam problem. Jako obejście użyłem starszej wersji openssh do wygenerowania klucza. Możesz sprawdzić, czy wygenerowany klucz jest poprawny, używając openssl rsa -text -in plik_klucza -passin 'pass: passphrase'. Wersja 7.4p1-16 działa.
typ

Odpowiedzi:


73

Ostatnio napotkałem ten sam problem (po uaktualnieniu do mojej wersji 10.14.1), oto 2 możliwe rozwiązania tego problemu.

  • Zmień wersję binarną ssh-keygen (możesz łatwo pobrać starą wersję z dowolnego obrazu linux / docker)

LUB

  • Dodaj opcję -m PEMdo polecenia ssh-keygen. Na przykład możesz uruchomić, ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"aby zmusić ssh-keygen do wyeksportowania jako PEMformat.

Wygląda na to, że w obecnej wersji ssh-keygen w mojejve domyślny format eksportu jest taki, RFC4716jak wspomniano tutaj


1
Domyślny format publickey eksportu to rzeczywiście rfc4716, ale format Q jest wewnętrznym formatem klucza prywatnego i jest „nowym” formatem OpenSSH, który nie istniał w 1999 roku (!) I nie jest już opisany w bieżącym; spróbuj 6.0 do 6.3.
dave_thompson_085

3
Nie jestem w stanie edytować odpowiedzi, ale proszę wyjaśnić, że 1. i 2. to niezależne rozwiązania, a nie kolejne kroki. NIE trzeba obniżać wersji w celu jednorazowego wygenerowania klucza. Wystarczy dodać-m PEM
sdoxsee

47

Nowe klucze w formacie klucza prywatnego OpenSSH można przekonwertować za pomocą narzędzia ssh-keygen na stary format PEM.

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

Nie ma potrzeby przejścia na starszą wersję OpenSSH, aby osiągnąć ten wynik.


Tak. Jak już wspomniałem w komentarzach do zaakceptowanej odpowiedzi. serverfault.com/questions/939909/…
sdoxsee

8
W przyjętej odpowiedzi nie jest jasne, że nie trzeba tworzyć nowej pary kluczy. Możesz wziąć istniejący klucz i przekonwertować je za pomocą tego polecenia. Zastępuje plik, więc uważam, że dobrym pomysłem jest wcześniejsze utworzenie kopii zapasowej, na wszelki wypadek.
martintama

Dziękujemy za dodanie instrukcji dotyczących konwersji istniejącego klucza prywatnego na format RSA. Właśnie uratowałem mój bekon!
Craig Blaszczyk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.