150 votes

SSH retourne soudainement un format invalide

Il y a quelque temps, j'ai mis en place un serveur sur AWS et j'ai utilisé leur clé SSH générée. J'ai enregistré la clé dans Lastpass et je l'ai récupérée avec succès à partir de là auparavant, et j'ai réussi à la faire fonctionner. Cependant, après avoir essayé à nouveau aujourd'hui, je n'arrive pas à la faire fonctionner.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

J'ai essayé ssh -i key_name, ssh-keygen -f key_name, mais rien ne fonctionne, je reçois toujours ce message d'erreur :

Chargement de la clé "key_name" : format invalide

Y a-t-il un moyen de réparer cela?

0 votes

Juste remarqué quelque chose : il devrait être chmoded 0400 (lecture seule). Il semble que ce ne soit pas le cas ici, car l'utilisateur a le privilège d'écriture.

0 votes

J'avais juste besoin d'une nouvelle ligne à la fin de la clé privée. Copié d'Ubuntu sur Mac et rencontré une erreur.

1voto

xiniu Points 29

Vous vous connectez avec le mauvais utilisateur

Dans mon cas, j'essayais de me connecter à une instance Amazon AWS EC2, mais obtenais l'erreur

load pubkey "MyPrivateKey.pem": format invalide

Cela était dû au fait que j'essayais de me connecter avec le mauvais utilisateur (ec2-user)

J'utilisais une machine Ubuntu, avec l'utilisateur ubuntu au lieu de ec2-user (comme indiqué dans le système d'exploitation officiel du serveur Amazon Linux).

Mais pourquoi cette erreur?

Il s'avère qu'Amazon utilise un ancien format (puttygen indique lors du chargement "clé privée openssh ssh-2 (ancien format pem)") que openssh n'apprécie pas beaucoup, il s'agit donc vraiment d'un avertissement et non d'une erreur.

L'erreur réelle (il n'y a pas d'utilisateur tel sur ce serveur) est cachée par le serveur (sinon vous pourriez effectuer une attaque brute-force sur les noms d'utilisateur), mais à la place un "Connection closed" est affiché.


Vous pouvez trouver le nom que vous utilisez pour vous connecter à votre machine sur AWS sous Actions>Connecter.


Comment corriger l'avertissement?

Suivez simplement la réponse de "Ras", qui consiste à utiliser PuTTYgen pour convertir au format OpenSSH.

1voto

Bob Points 1

Pour ceux qui ont essayé sudo puttygen ~/.ssh/your-key.pem -O private-openssh -o ~/.ssh/your-key-new.pem et ont reçu un message d'erreur disant puttygen: cette commande n'effectuerait aucune action utile, il existe un format encore plus récent, donc vous devez modifier la commande comme suit:

sudo puttygen ~/.ssh/your-key.pem -O private-openssh-new -o ~/.ssh/your-key-new.pem

J'utilisais une clé générée par AWS sur Manjaro qui est un peu plus à la pointe que la plupart des autres distributions, cela fonctionnait toujours mais le message d'avertissement était ennuyeux.

Pour plus d'informations, vous pouvez utiliser man puttygen mais la section pertinente est ci-dessous:

-O type-de-sortie
    Spécifie le type de sortie que vous souhaitez que puttygen produise. Les options acceptables sont :

    private
      Enregistre la clé privée dans un format utilisable par PuTTY. Il s'agira soit du format de clé SSH-1 standard, soit du format de clé SSH-2 de PuTTY.

    public
      Enregistre uniquement la clé publique. Pour les clés SSH-1, le format de clé publique standard sera utilisé (`1024 37 5698745...'). Pour les clés SSH-2, la clé publique sera générée dans le format spécifié par
      la RFC 4716, qui est un fichier texte multiligne commençant par la ligne `---- BEGIN SSH2 PUBLIC KEY ----'.

    public-openssh
      Enregistre uniquement la clé publique, dans un format utilisable par OpenSSH. Pour les clés SSH-1, ce format de sortie se comporte de manière identique à public. Pour les clés SSH-2, la clé publique sera générée dans le  format OpenSSH,
      qui est une seule ligne (`ssh-rsa AAAAB3NzaC1yc2...').

    fingerprint
      Imprime l'empreinte de la clé publique. Tous les algorithmes de signature sont censés être compatibles avec OpenSSH.

    private-openssh
      Enregistre une clé privée SSH-2 dans le format d'OpenSSH, en utilisant le format le plus ancien disponible pour maximiser la compatibilité ascendante. Cette option n'est pas autorisée pour les clés SSH-1.

    private-openssh-new
      Comme private-openssh, sauf que cela force l'utilisation du nouveau format d'OpenSSH même pour les clés RSA, DSA et ECDSA.

    private-sshcom
      Enregistre une clé privée SSH-2 dans le format de ssh.com. Cette option n'est pas autorisée pour les clés SSH-1.

    Si aucun type de sortie n'est spécifié, la valeur par défaut est privée.

1voto

J'ai obtenu cette erreur lorsque j'ai utilisé ma clé publique avec ssh-add. J'aurais dû utiliser la clé privée. La clé publique peut causer cette erreur.

ssh-add rsakey.pub
Erreur lors du chargement de la clé "rsakey.pub" : format invalide

Cependant, ceci est correct :

ssh-add rsakey

1voto

syntagma Points 141

Dans mon cas, le problème était que la clé privée était au format suivant :

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

alors que le serveur SSH attendait le format suivant :

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

1voto

Michael Hall Points 111

J'avais ce problème avec Mac OSX 11.4 et la version ssh OpenSSH_8.1p1, LibreSSL 2.7.3. J'ai essayé toutes les autres solutions et rien n'a fonctionné (c'est-à-dire, j'ai régénéré les clés, essayé des nouvelles lignes, etc.).

Ensuite, j'ai lu ceci sur la documentation de GitHub et en ajoutant ce qui suit à mon ~/.ssh/config, je n'ai plus eu l'erreur

Host *
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_rsa

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X