web-dev-qa-db-fra.com

ssh: erreur de chargement des erreurs "./id_rsa": format invalide

Pour une raison quelconque, une de mes clés SSH "vient de faire échouer" - cela vient d'arrêter de travailler:

$ ssh-add ./id_rsa
Error loading key "./id_rsa": invalid format

Copier la clé à l'intérieur d'un VM propre, la clé fonctionne. Même avec exactement la même version SSH (openssh_7.8p1, openssl 1.1.0i-FIPS 14 août 2018 sur Fedora 28). Donc, il doit être lié à une configuration sur mon système que je suppose.

# cat ./id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,...

...
-----END RSA PRIVATE KEY-----

Également peculiaire: GNOME gère en quelque sorte à ajouter la clé sur la connexion avec Seahorse. Puis ssh-add -L répertorie la clé mais elle n'est pas utilisable:

sign_and_send_pubkey: signing failed: agent refused operation
8
FlorianLudwig

Traditionnellement OpenSSH a utilisé le même format de clé privé est identique au format PEM plus ancien utilisé par OpenSSL. (Parce qu'il utilise OpenSSL pour analyser la clé, il acceptera également le nouveau format PKCS # 8.)

Donc, le problème peut être l'un des:

  1. Votre version OpenSSL refuse de charger ce format de clé. Peut-être qu'il a accidentellement activé FIPS mode et refuse tous les algorithmes, à l'exception de la partie de son original FIPS Validation?

    Essayez de charger la clé dans l'outil de commande openssl (qui, oui, peut également être lié à une autre libcrypto , et vous devrait vérifier avec LDD ):

    openssl rsa -noout -text < id_rsa
    openssl pkey -noout -text < id_rsa
    

    Essayez de la convertir en PKCS # 8 Format:

    umask 077
    openssl pkey < id_rsa > id_rsa.pkcs8
    ssh-add id_rsa.pkcs8
    
  2. Votre OpenSSH a été construit sans support OpenSSL. Même si ssh -V dit que le support a été activé, que ne signifie pas automatiquement le ssh-add binaire est la même - cela pourrait provenir d'une installation partielle différente.

    Utilisation type -a ssh et type -a ssh-add Pour comparer les emplacements d'installation.

    Une fois que vous connaissez le chemin, utilisez ldd /usr/bin/ssh-add Pour vérifier qu'il est lié à libcrypto.so (la bibliothèque cryptographique OpenSSL).


Si rien ne fonctionne du tout, essayez de convertir votre clé au nouveau format propriétaire openssh à l'aide de ... PUTTY. Installez le package PuTTY pour Fedora et utilisez:

puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat

Également peculiaire: GNOME gère en quelque sorte à ajouter la clé sur la connexion avec Seahorse.

Les versions de KeyRing Gnome plus anciennes ont une copie interne du code de l'agent SSH et sont indépendantes du système OpenSSH. Ils accepteront donc les clés que votre opensh ne le fera pas. (Mais d'autre part, cela signifie sévère à la traîne en termes de support de fonctionnalité (telles que les touches ED25519) et le dernier porte-clés GNOME utilise simplement le système SSH-Agent.)

12
user1686

Dans mon cas, le problème de mon cas a causé des caractères de fin de ligne incorrects dans le fichier ID_RSA, lors de la copie de mon éditeur de texte Windows souhaitait m'aider et convertir EOLS en CR LF.

2
Kamil