Tradizionalmente OpenSSH utilizzava lo stesso formato di chiave privata identico al vecchio formato PEM utilizzato da OpenSSL. (Poiché utilizza OpenSSL per l'analisi della chiave, accetterà anche il nuovo formato PKCS#8.)
Quindi il problema può essere uno dei seguenti:
-
La tua versione di OpenSSL si rifiuta di caricare questo formato di chiave. Forse ha abilitato accidentalmente la modalità FIPS e rifiuta qualsiasi algoritmo tranne quelli che fanno parte della sua convalida FIPS originale?
Prova a caricare la chiave nel
openssl
strumento da riga di comando (che, sì, potrebbe anche essere collegato a un altro libcrypto , e dovresti verificare con ldd ):openssl rsa -noout -text < id_rsa openssl pkey -noout -text < id_rsa
Prova a convertirlo nel formato PKCS#8:
umask 077 openssl pkey < id_rsa > id_rsa.pkcs8 ssh-add id_rsa.pkcs8
-
Il tuo OpenSSH è stato creato senza il supporto OpenSSL. Anche se
ssh -V
dice che il supporto è stato abilitato, ciò non significa automaticamente ilssh-add
binario è lo stesso:potrebbe provenire da un'installazione parziale diversa.Usa
type -a ssh
etype -a ssh-add
per confrontare le posizioni di installazione.Una volta che conosci il percorso, usa
ldd /usr/bin/ssh-add
per verificare che sia collegato alibcrypto.so
(la libreria crittografica OpenSSL).
Se non funziona nulla, prova a convertire la tua chiave nel nuovo formato proprietario di OpenSSH usando... PuTTY. Installa il putty
pacchetto per Fedora e usa:
puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat
Anche peculiare:GNOME riesce in qualche modo ad aggiungere la chiave all'accesso con cavalluccio marino.
Le versioni precedenti di GNOME Keyring hanno una copia interna del codice dell'agente SSH e sono indipendenti dal sistema OpenSSH. Quindi accetteranno chiavi che il tuo OpenSSH non accetterà. (Ma d'altra parte, questo significa un forte ritardo in termini di supporto delle funzionalità (come le chiavi Ed25519), e l'ultimo GNOME Keyring utilizza invece solo il sistema ssh-agent.)
Ricevevo lo stesso messaggio di errore quando passavo la chiave privata attraverso una variabile della pipeline CI in Gitlab.
L'errore era causato dalla mancanza di un carattere di nuova riga alla fine della variabile ed è stato risolto aggiungendolo manualmente.
Nel mio caso, il problema è stato causato da caratteri di fine riga errati nel file id_rsa. Dopo aver copiato il contenuto del file, l'editor di testo di Windows ha voluto aiutarmi e ha convertito gli EOL in CR LF.