Message d’erreur
Load key "/path/to/key": error in libcrypto
Également affiché sous la forme
- error in libcrypto
Le chemin est celui du fichier de clé que vous avez utilisé. Certaines altérations produisent plutôt « Load key "…": invalid format » (par exemple pour les clés PEM auxquelles il manque une ligne au milieu) ; les causes se recoupent.
OpenSSH (ssh, ssh-add, ssh-keygen, git over SSH) — key file could not be parsed
Ce que cela signifie
OpenSSH n’a pas pu analyser le fichier de clé privée dans son propre format, puis l’a transmis à OpenSSL (libcrypto) comme clé PEM, ce qui a également échoué : l’erreur signalée est donc le message générique « error in libcrypto », et non une raison précise. Dans les versions actuelles d’OpenSSH (vérifié sur la 10.0), presque toute altération d’un fichier `OPENSSH PRIVATE KEY` aboutit ici : fins de ligne Windows, saut de ligne final manquant, ligne perdue ou clé aplatie sur une seule ligne. Les clés PEM/PKCS#8 endommagées aboutissent ici lorsqu’elles sont tronquées ou aplaties, de même que les fichiers PuTTY `.ppk`.
Pourquoi cela se produit
Fins de ligne Windows (CRLF)
fréquenteLes clés collées dans les champs de secrets de la CI, modifiées sous Windows ou extraites avec `core.autocrlf` reçoivent des fins de ligne `\r\n`. L’analyse des clés au format OpenSSH échoue alors.
Le saut de ligne final a été supprimé
fréquenteDe nombreux gestionnaires de secrets et les constructions `echo -n`/`$(...)` suppriment le saut de ligne final. Pour les clés au format OpenSSH, cela suffit à empêcher le chargement.
Lignes perdues, tronquées ou fusionnées
fréquenteVariables d’environnement qui transforment les sauts de ligne en espaces, copier-coller depuis une messagerie instantanée, ou limites de taille qui coupent la clé.
Ni une clé OpenSSH ni une clé PEM
occasionnelleLes fichiers PuTTY `.ppk`, les clés publiques, les certificats ou les JWK fournis comme fichiers d’identité ne sont pas des clés privées qu’OpenSSH peut lire.
Comment corriger l’erreur
- 1.
Écrire les clés de CI à l’octet près
Supprimez les `\r`, terminez par un saut de ligne, appliquez le mode 600 et testez immédiatement avec `ssh-keygen -y`, afin qu’un secret défectueux fasse échouer clairement l’étape de configuration.
bash # CI: write the key exactly, normalise line endings, guarantee the final newline, restrict permissions install -d -m 700 ~/.ssh printf '%s\n' "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keygen -y -f ~/.ssh/id_ed25519 > /dev/null && echo "key parses" - 2.
Examiner la structure du fichier
`file`, la première ligne et les derniers octets révèlent immédiatement des fins de ligne CRLF, un saut de ligne manquant ou une clé sur une seule ligne.
bash file ~/.ssh/id_ed25519 # "OpenSSH private key" vs "with CRLF line terminators" head -1 ~/.ssh/id_ed25519; tail -c 40 ~/.ssh/id_ed25519 | od -c | tail -3 # framing and final "\n" wc -l ~/.ssh/id_ed25519 # a one-line file means the newlines were lost