Message d’erreur
Load key "/path/to/key": invalid format
Le chemin est renseigné à chaque appel. La formulation dépend de la bibliothèque cryptographique avec laquelle OpenSSH a été compilé : avec OpenSSL 1.1 ou LibreSSL (macOS), chacun des échecs ci-dessous affiche « invalid format » ; les builds liés à OpenSSL 3 (Ubuntu 22.04 et versions ultérieures, Debian 12 et versions ultérieures) affichent « error in libcrypto » pour la plupart d’entre eux et conservent « invalid format » pour les clés au format PEM endommagées. Un caractère modifié dans le corps produit « unknown or unsupported key type » sur tous ces builds.
OpenSSH — ssh, ssh-keygen, ssh-add
Ce que cela signifie
OpenSSH a tenté de charger un fichier de clé privée et n’a pu l’analyser dans aucun des formats qu’il connaît (OPENSSH PRIVATE KEY, PKCS#8, PEM historique). Le fichier est endommagé, tronqué, dans un format étranger comme le .ppk de PuTTY, ou n’est pas du tout une clé privée : c’est un échec lié au format du fichier, qui survient avant toute demande de phrase de passe et tout échange avec le serveur.
Pourquoi cela se produit
Le copier-coller a endommagé la clé
fréquenteLes clés transmises par messagerie instantanée, par e-mail ou d’un terminal à l’autre perdent leurs sauts de ligne finaux, récupèrent des retours à la ligne parasites ou des caractères typographiques, ou perdent leurs tirets finaux. Le corps base64 d’un bloc OPENSSH PRIVATE KEY est sensible à la longueur : un seul caractère perdu invalide le fichier. (À elle seule, l’absence du saut de ligne final est un déclencheur classique.)
Fichier .ppk de PuTTY utilisé avec OpenSSH
fréquenteLe format de clé de PuTTY (« PuTTY-User-Key-File-2: ... ») n’est pas celui d’OpenSSH. Passer un .ppk à ssh -i échoue précisément ici ; la clé doit être convertie une fois pour toutes.
Une clé publique à la place de la clé privée
fréquentessh -i id_ecdsa.pub (le fichier .pub), ou une ligne d’authorized_keys enregistrée comme fichier d’identité : le chargeur de clés privées trouve le contenu d’une clé publique et signale « invalid format ».
Fichier tronqué ou partiellement synchronisé
occasionnelleUn fichier de clé synchronisé via le cloud ou transféré par un scp interrompu, coupé au milieu du corps, est analysé comme des données inexploitables. Reproduit : tronquer un fichier de clé valide produit exactement « invalid format » sur OpenSSH 8.4 et sur macOS.
Comment corriger l’erreur
- 1.
Examiner d’abord l’encadrement
La première et la dernière ligne, plus un test de validité (-y affiche la clé publique si, et seulement si, la clé privée peut être analysée), identifient la catégorie d’échec en quelques secondes.
bash head -1 ~/.ssh/id_ecdsa # -----BEGIN OPENSSH PRIVATE KEY----- tail -c 50 ~/.ssh/id_ecdsa | xxd | tail -1 # must end with 0a (newline) ssh-keygen -y -f ~/.ssh/id_ecdsa # parses? prints the public key - 2.
Convertir les clés PuTTY au format OpenSSH
Une conversion unique avec puttygen ; la clé fonctionne ensuite avec ssh, ssh-add et ssh-agent.
bash puttygen key.ppk -O private-openssh -o ~/.ssh/id_converted chmod 600 ~/.ssh/id_converted - 3.
Transférer les clés sans perte
Déplacez les fichiers de clés avec scp/rsync plutôt que par le presse-papiers, gardez le mode 600 et, si la clé privée est irrécupérable, générez une nouvelle paire : les versions récentes d’OpenSSH privilégient Ed25519.
bash scp -p old-host:~/.ssh/id_ecdsa ~/.ssh/ # or start clean: ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519