Aller au contenu
ecdsa.com
OpenSSHAutres outils

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

Comment corriger l’erreur

  1. 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. 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. 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

Erreurs associées

Parcourir toute la base de données des erreurs de signature