ssh-keygen non crea la chiave privata RSA


73

Sto cercando di creare una chiave privata e ho riscontrato un problema.

Quando uso ssh-keygen -t rsa -b 4096 -C "your_email@example.com", ottengo una chiave privata nel seguente formato.

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

E questo non viene accettato per un'applicazione che sto cercando di utilizzare.

Mi aspetto una chiave nel seguente formato RSA.

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

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

Come posso creare il formato corretto? Questo è strano perché ogni altro Mac che ho crea il formato corretto, tranne quello con cui sto avendo problemi.

Sono su un nuovo Mac OS Mojave installato


e gli altri Mac non sono su Mojave? Anch'io sono su Mojave e ottengo il "nuovo" formato di chiave openssh. Quindi presumo che altri Mac siano nelle versioni inferiori. Controlla la versione di OpenSSL utilizzata.
Zina,

@Zina altri Mac sono anche su Mojave e hanno la stessa versione OpenSSL.
Luna,

RSA dovrebbe essere il tipo predefinito. E se ometti del -t rsatutto l' opzione?
Guzzijason,

@guzzijason è lo stesso. Questo è ciò che mi sta facendo impazzire. Anche se ometto -t rsa sul mio mac (funzionante), genera RSA correttamente.
Luna

Ho avuto lo stesso problema. Come soluzione alternativa ho usato la versione precedente di openssh per generare la chiave. Puoi verificare se la tua chiave generata è corretta con openssl rsa -text -in key_file -passin 'pass: passphrase'. La versione 7.4p1-16 funziona.
atipo

Risposte:


76

Di recente ho riscontrato lo stesso problema (dopo l'aggiornamento a Mojave 10.14.1), qui ci sono 2 possibili soluzioni per questo problema.

  • Esegui il downgrade del tuo binario ssh-keygen (puoi facilmente ottenere la vecchia versione da qualsiasi immagine linux / docker)

O

  • Aggiungi un'opzione -m PEMal tuo comando ssh-keygen. Ad esempio, è possibile eseguire ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"per forzare ssh-keygen all'esportazione come PEMformato.

Sembra che nell'attuale versione di ssh-keygen in mojave, il formato di esportazione predefinito sia RFC4716come menzionato qui


1
Il formato di chiave pubblica di esportazione predefinito è effettivamente rfc4716, ma il formato in Q è un formato di chiave privata interna ed è il 'nuovo' formato di OpenSSH, che non esisteva nel 1999 (!), E non è più descritto nell'attuale; prova da 6.0 a 6.3.
dave_thompson_085,

3
Non sono in grado di modificare la risposta, ma per favore sia chiaro che 1. e 2. sono soluzioni indipendenti, non passaggi sequenziali. NON è necessario eseguire il downgrade per una generazione di chiavi una tantum. Aggiungi il-m PEM
sdoxsee il

52

Le nuove chiavi con il formato di chiave privata OpenSSH possono essere convertite usando l'utilità ssh-keygen nel vecchio formato PEM.

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

Non è necessario eseguire il downgrade a OpenSSH precedente solo per ottenere questo risultato.


Sì. Come ho già menzionato nei commenti sulla risposta accettata. serverfault.com/questions/939909/…
sdoxsee

9
Ciò che non è chiaro nella risposta accettata è che non è necessario creare una nuova coppia di chiavi. Puoi prendere la tua chiave esistente e convertirla con quel comando. Sovrascrive il file, quindi penso che sia una buona idea fare un backup prima, per ogni evenienza.
martintama,

Grazie per aver aggiunto le istruzioni su come convertire una chiave privata esistente in formato RSA. Mi hai appena salvato la pancetta!
Craig Blaszczyk il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.