Tradicionalmente, OpenSSH usaba el mismo formato de clave privada que es idéntico al antiguo formato PEM usado por OpenSSL. (Debido a que utiliza OpenSSL para analizar la clave, también aceptará el formato PKCS#8 más reciente).
Así que el problema puede ser uno de:
-
Su versión de OpenSSL se niega a cargar este formato de clave. ¿Quizás ha habilitado accidentalmente el modo FIPS y rechaza cualquier algoritmo excepto aquellos que forman parte de su validación FIPS original?
Intenta cargar la clave en el
openssl
herramienta de línea de comandos (que, sí, también podría estar vinculada a un libcrypto diferente , y debería consultar con ldd ):openssl rsa -noout -text < id_rsa openssl pkey -noout -text < id_rsa
Intente convertirlo al formato PKCS#8:
umask 077 openssl pkey < id_rsa > id_rsa.pkcs8 ssh-add id_rsa.pkcs8
-
Su OpenSSH se ha creado sin compatibilidad con OpenSSL. Aunque
ssh -V
dice que el soporte fue habilitado, eso no significa automáticamente elssh-add
el binario es el mismo; puede provenir de una instalación parcial diferente.Usa
type -a ssh
ytype -a ssh-add
para comparar ubicaciones de instalación.Una vez que sepa la ruta, use
ldd /usr/bin/ssh-add
para verificar que está vinculado alibcrypto.so
(la biblioteca criptográfica OpenSSL).
Si nada funciona, intente convertir su clave al nuevo formato propietario de OpenSSH usando... PuTTY. Instala el putty
paquete para Fedora, y use:
puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat
También peculiar:GNOME de alguna manera logra agregar la clave al iniciar sesión con caballito de mar.
Las versiones anteriores de GNOME Keyring tienen una copia interna del código del agente SSH y son independientes del sistema OpenSSH. Entonces aceptarán claves que su OpenSSH no aceptará. (Pero por otro lado, esto significa un retraso severo en términos de soporte de funciones (como las claves Ed25519), y el último GNOME Keyring solo usa el sistema ssh-agent en su lugar).
Recibía el mismo mensaje de error al pasar la clave privada a través de una variable de canalización de CI en Gitlab.
El error se produjo por no tener un carácter de nueva línea al final de la variable y se solucionó al agregarlo manualmente.
En mi caso, el problema fue causado por caracteres de final de línea incorrectos en el archivo id_rsa. Después de copiar el contenido del archivo, el editor de texto de Windows quiso ayudarme y convirtió los EOL a CR LF.