ssh-keygen tidak membuat kunci pribadi RSA

72

Saya mencoba membuat kunci pribadi dan mengalami masalah.

Ketika saya menggunakan ssh-keygen -t rsa -b 4096 -C "[email protected]", saya mendapatkan kunci pribadi dalam format berikut.

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

Dan ini tidak diterima untuk aplikasi yang saya coba gunakan.

Saya mengharapkan kunci dalam format RSA berikut.

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

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

Bagaimana cara membuat format yang benar? Ini aneh karena setiap mac lain saya telah membuat format yang benar, kecuali yang saya punya masalah dengan.

Saya menggunakan Mo OS Macja yang baru diinstal

Bulan
sumber
dan Mac lain tidak ada di Mojave? Saya di Mojave juga dan mendapatkan format kunci openssh "baru". Jadi saya menganggap Mac lain ada di versi yang lebih rendah. Periksa versi OpenSSL yang digunakan.
Zina
@Zina Mac lain juga ada di Mojave dan memiliki versi OpenSSL yang sama.
Bulan
RSA harus menjadi tipe default. Bagaimana jika Anda menghilangkan -t rsaopsi sama sekali?
guzzijason
@guzzijason sama saja. Itu yang membuatku gila. Bahkan jika saya menghilangkan -t rsa di mac saya (yang bekerja), ia menghasilkan RSA dengan benar.
Bulan
Saya memiliki masalah yang sama. Sebagai solusi, saya telah menggunakan versi openssh yang lebih lama untuk menghasilkan kunci. Anda dapat menguji apakah kunci yang Anda buat benar dengan openssl rsa -text -in key_file -passin 'pass: passphrase'. Versi 7.4p1-16 berfungsi.
Atype

Jawaban:

76

Saya menghadapi masalah yang sama baru-baru ini (setelah upgrade ke mojave 10.14.1), berikut adalah 2 solusi yang mungkin untuk masalah ini.

  • Turunkan biner ssh-keygen Anda (Anda dapat dengan mudah mendapatkan versi lama dari gambar linux / docker)

ATAU

  • Tambahkan opsi -m PEMke dalam perintah ssh-keygen Anda. Misalnya, Anda dapat menjalankan ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"untuk memaksa ssh-keygen untuk mengekspor sebagai PEMformat.

Sepertinya dalam versi ssh-keygen saat ini di mojave, format ekspor default adalah RFC4716seperti yang disebutkan di sini

Apolozeus
sumber
1
Format publickey ekspor default memang rfc4716, tetapi format dalam Q adalah format privatekey internal dan merupakan format 'baru' OpenSSH, yang tidak ada pada tahun 1999 (!), Dan tidak lagi dijelaskan dalam arus; coba 6.0 hingga 6.3.
dave_thompson_085
3
Saya tidak dapat mengedit jawaban tetapi harap jelaskan bahwa 1. dan 2. adalah solusi independen, bukan langkah berurutan. Anda TIDAK perlu menurunkan versi untuk pembuatan kunci satu kali. Cukup tambahkan-m PEM
sdoxsee
50

Kunci baru dengan format kunci privat OpenSSH dapat dikonversi menggunakan utilitas ssh-keygen ke format PEM lama.

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

Tidak perlu menurunkan versi ke OpenSSH lama hanya untuk mencapai hasil ini.

mydeardiary
sumber
Iya. Seperti yang sudah saya sebutkan di komentar pada jawaban yang diterima. serverfault.com/questions/939909/…
sdoxsee
9
Yang tidak jelas dalam jawaban yang diterima adalah bahwa Anda tidak perlu membuat pasangan kunci baru. Anda dapat mengambil kunci yang ada dan mengonversinya dengan perintah itu. Itu menimpa file, jadi saya pikir itu ide yang baik untuk membuat cadangan sebelumnya, untuk berjaga-jaga.
martintama
Terima kasih telah menambahkan instruksi tentang cara mengonversi kunci pribadi yang ada ke format RSA. Baru saja menyelamatkan bacon saya!
Craig Blaszczyk