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.