Jak uzyskać plik .pem z pary kluczy ssh?

33

Utworzyłem parę kluczy za pomocą ssh-keygen i otrzymałem dwa klasyczne id_rsa i id_rsa.pub.

Zaimportowałem klucz publiczny na moje konto AWS EC2.

Teraz utworzyłem instancję Windows i aby odszyfrować hasło tej instancji, konsola AWS prosi mnie o plik .pem. Jak mogę pobrać ten plik .pem z moich dwóch plików id_rsa i id_rsa.pub?

gsi-frank
źródło
2
Klucz prywatny jest już w formacie PEM i może być używany bez zmian.
Michael Hampton
@MichaelHampton, będzie to zależeć od wersji ssh-keygen i polecenia użytego do wygenerowania pary kluczy. Niektóre wersje domyślnie używają RFC4716 zamiast PEM.
austin

Odpowiedzi:

44

Zgodnie z tym poleceniem można użyć:

ssh-keygen -f id_rsa -e -m pem

Spowoduje to konwersję klucza publicznego do formatu zgodnego z OpenSSL. Twój klucz prywatny jest już w formacie PEM i może być używany w takiej postaci, w jakiej jest (jak stwierdził Michael Hampton).

Dokładnie sprawdzić czy AWS nie prosi o (X.509), certyfikat w formacie PEM, co byłoby coś innego niż klucze SSH.

fuero
źródło
Ale nie potrzebują klucza publicznego, prawda? Potrzebują klucza prywatnego do odszyfrowania hasła z konsoli AWS
Michael Bailey
Nie mam pojęcia, do czego OP tego potrzebuje.
fuero
Nie jestem pewien, czy jesteś zaznajomiony z AWS, ale po uruchomieniu instancji systemu Windows (w zasadzie serwera) AWS przechowuje hasło, dopóki nie podasz im swojego klucza prywatnego. Następnie podają hasło do serwera. W ten sposób serwery Windows i Linux w AWS zależą od kluczy prywatnych.
Michael Bailey,
1
To nie działa w systemie OS X (ssh -v ==> OpenSSH_6.2p2)
chrish,
3
w przeciwieństwie do dokumentacji, wyświetli klucz PUBLIC w formacie PEM, a nie prywatny. obecnie ssh-keygen nie obsługuje konwersji kluczy prywatnych.
morgwai,
21

Użycie ssh-keygendo wyeksportowania klucza w formacie .pem działało dla mnie.

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

Następnie po prostu skopiuj .pemklucz w razie potrzeby.

Na przykład:

  • -f id_rsa.pubczęść wskazuje plik wejściowy do odczytu z
  • -m 'PEM wskazuje typ pliku PEM
  • -eopcja wskazuje, że produkcja będzie eksportowana
Matt
źródło
5

id_rsa to plik, którego musisz użyć do odszyfrowania hasła wystąpienia Windows EC2, ale tylko upewnij się, że plik, który kopiujesz, wklej nie jest chroniony przed frazą.

Rozwiązałem problem z tymczasowym niezabezpieczeniem id_rsapliku za pomocą:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
gsi-frank
źródło
2

Początkowo podczas używania ssh-keygenmogłem wygenerować klucz publiczny zgodny z AWS EC2, ale miałem problemy z tworzeniem kompatybilnych kluczy prywatnych. Poniżej przedstawiono pary kluczy publicznych i prywatnych, które są zgodne z AWS EC2.

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

Oto informacje o każdym parametrze:

  • -P: jest dla hasła. Celowo ustawiony na pusty.
  • -t: określa typ klucza do utworzenia. Para kluczy AWS EC2 wymaga RSA. Z mojego doświadczenia wynika, że ​​dotyczy to utworzonego klucza publicznego.
  • -b: Określa liczbę bitów w kluczu. Obsługiwane długości to 1024, 2048 i 4096. Jeśli łączysz się za pomocą SSH podczas korzystania z interfejsu EC2 Instance Connect API, obsługiwane długości to 2048 i 4096.
  • -m: określa format klucza do generowania klucza. Ustawienie formatu „PEM” podczas generowania obsługiwanego typu klucza prywatnego spowoduje zapisanie klucza w starszym formacie klucza prywatnego PEM. Para kluczy AWS EC2 wymaga starszego formatu
  • -f: określa wyjściową nazwę pliku klucza

Zasoby:

Aby uzyskać więcej informacji na temat ssh-keygen, zobacz:  https://man.openbsd.org/ssh-keygen.1

AWS - pary kluczy EC2 -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

Mike Barlow - BarDev
źródło
Mike postanowił nie dołączać dokumentacji dla opcji „-b”. Dla niektórych może to być oczywiste, co oznacza „4064-bitowe szyfrowanie, proszę”. Jak stwierdzono w powiązanym dokumencie AWS: „Obsługiwane długości to 1024, 2048 i 4096. Jeśli łączysz się za pomocą SSH podczas korzystania z interfejsu API instancji EC2 Connect, obsługiwane długości to 2048 i 4096”.
nclark
@ nclard, Nie jestem pewien, dlaczego zostawiłem ten parametr -b. Właśnie to dodałem.
Mike Barlow - BarDev
0

Po uruchomieniu instancji EC2 przypisuje się do niej parę kluczy (lub brak). Nie można go później zmienić.

Tylko przy użyciu tego pliku .pem z tej pary kluczy można odszyfrować hasło systemu Windows.

Plik .pem zostałby pobrany podczas tworzenia pary kluczy. Nie możesz tego dostać ponownie. Jeśli go zgubiłeś, nie masz szczęścia.

Nie możesz użyć pliku .pem, który sam wygenerowałeś, chyba że zaimportowałeś ten klucz do AWS przed uruchomieniem instancji i przypisałeś go do instancji.

Mówiąc najprościej, jeśli nie masz oryginalnego pliku .pem, nie możesz uzyskać hasła.

Edycja: po ponownym przeczytaniu pytania zdaję sobie sprawę, że OP zaimportował swój klucz do AWS.

Matt Houser
źródło