Bagaimana cara mendapatkan file .pem dari pasangan kunci ssh?

33

Saya membuat sepasang kunci menggunakan ssh-keygen dan mendapatkan dua clasic id_rsa dan id_rsa.pub.

Saya mengimpor kunci publik ke akun AWS EC2 saya.

Sekarang saya membuat instance windows dan mendekripsi password instance itu, konsol AWS meminta saya untuk file .pem. Bagaimana saya bisa mendapatkan file .pem dari dua file id_rsa dan id_rsa.pub saya?

gsi-frank
sumber
2
Kunci pribadi sudah dalam format PEM dan dapat digunakan apa adanya.
Michael Hampton
@MichaelHampton, ini akan tergantung pada versi ssh-keygen dan perintah yang digunakan untuk menghasilkan pasangan kunci. Beberapa versi menggunakan RFC4716 secara default, bukan PEM.
Australia

Jawaban:

44

Menurut ini , perintah ini dapat digunakan:

ssh-keygen -f id_rsa -e -m pem

Ini akan mengonversi kunci publik Anda ke format OpenSSL yang kompatibel. Kunci pribadi Anda sudah dalam format PEM dan dapat digunakan apa adanya (seperti yang dikatakan Michael Hampton).

Periksa ulang apakah AWS tidak meminta sertifikat (X.509) dalam format PEM, yang akan berbeda dari kunci SSH Anda.

fuero
sumber
Tetapi mereka tidak membutuhkan kunci publik, bukan? Mereka memerlukan kunci pribadi untuk mendekripsi kata sandi mereka dari Konsol AWS
Michael Bailey
Saya tidak tahu untuk apa OP ini dibutuhkan.
fuero
Tidak yakin seberapa terbiasa Anda dengan AWS, tetapi ketika Anda memutar instance windows (pada dasarnya server) AWS menyimpan kata sandi dari Anda sampai Anda memberikannya kunci pribadi Anda. Kemudian mereka memberi Anda kata sandi server. Dengan begitu server Windows dan Linux pada AWS keduanya bergantung pada kunci privat.
Michael Bailey
1
Ini tidak berfungsi pada OS X (ssh -v ==> OpenSSH_6.2p2)
chrish
3
bertentangan dengan dokumentasi, itu akan menghasilkan kunci PUBLIC dalam format PEM, bukan yang pribadi. Saat ini ssh-keygen tidak mendukung konversi kunci pribadi.
morgwai
21

Menggunakan ssh-keygenuntuk mengekspor kunci dalam format .pem bekerja untuk saya.

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

Kemudian cukup salin .pemkunci yang diperlukan.

Sebagai referensi:

  • yang -f id_rsa.pubsebagian menunjukkan file input untuk membaca dari
  • -m 'PEM menunjukkan tipe file PEM
  • yang -epilihan menunjukkan bahwa output akan diekspor
Mat
sumber
5

id_rsa adalah file yang harus Anda gunakan untuk mendekripsi kata sandi contoh Windows EC2, tetapi pastikan bahwa file yang Anda salin tempel tidak dilindungi frasa.

Saya memecahkan masalah mendapatkan file yang sementara tidak dilindungi id_rsadengan sesuatu seperti:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
gsi-frank
sumber
2

Awalnya, ketika menggunakan ssh-keygen, saya bisa membuat kunci publik yang kompatibel dengan AWS EC2, tetapi memiliki masalah dengan membuat kunci pribadi yang kompatibel. Berikut ini membuat pasangan kunci publik dan kunci yang kompatibel dengan AWS EC2.

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

Ini info tentang setiap parameter:

  • -P: untuk frasa sandi. Secara sengaja diatur untuk mengosongkan.
  • -t: Menentukan jenis kunci yang akan dibuat. AWS EC2 Key Pair membutuhkan RSA. Ini pengalaman saya bahwa ini berkaitan dengan kunci publik yang dibuat.
  • -b: Menentukan jumlah bit pada kunci. Panjang yang didukung adalah 1024, 2048, dan 4096. Jika Anda terhubung menggunakan SSH saat menggunakan EC2 Instance Connect API, panjang yang didukung adalah 2048 dan 4096.
  • -m: Menentukan format kunci untuk pembuatan kunci. Mengatur format "PEM" saat membuat jenis kunci privat yang didukung akan menyebabkan kunci disimpan dalam format kunci privat PEM. AWS EC2 Key Pair membutuhkan format lama
  • -f: Menentukan nama file keluaran dari file kunci

Sumber:

Untuk informasi lebih lanjut tentang ssh-keygen, lihat:  https://man.openbsd.org/ssh-keygen.1

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

Mike Barlow - BarDev
sumber
Mike memilih untuk tidak menyertakan dokumentasi untuk opsi '-b'. Mungkin jelas bagi sebagian orang, itu artinya "enkripsi 4096-bit". Sebagaimana dinyatakan dalam dokumen AWS yang ditautkan, "Panjang yang didukung adalah 1024, 2048, dan 4096. Jika Anda terhubung menggunakan SSH saat menggunakan API EC2 Instance Connect, panjang yang didukung adalah 2048 dan 4096."
nclark
@ nclard, Tidak yakin mengapa saya meninggalkan parameter -b. Baru saja menambahkannya.
Mike Barlow - BarDev
0

Ketika Anda meluncurkan instance EC2, Anda menetapkan pasangan kunci (atau tidak ada). Itu tidak bisa diubah sesudahnya.

Hanya menggunakan file .pem dari pasangan kunci itu Anda dapat mendekripsi kata sandi Windows.

File .pem akan diunduh ketika pasangan kunci dibuat. Anda tidak bisa mendapatkannya lagi. Jika Anda kehilangan itu, Anda kurang beruntung.

Anda tidak dapat menggunakan file .pem yang Anda hasilkan sendiri kecuali Anda mengimpor kunci itu ke AWS sebelum instance diluncurkan dan menetapkannya ke instance.

Sederhananya, jika Anda tidak memiliki file .pem yang asli, Anda tidak bisa mendapatkan kata sandi.

Sunting: setelah membaca kembali pertanyaan, saya menyadari OP telah mengimpor kuncinya ke AWS.

Matt Houser
sumber