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.