Mensagem de erro
Load key "/path/to/key": error in libcrypto
Também aparece como
- error in libcrypto
O caminho é o do arquivo de chave que você usou. Alguns danos geram “Load key "…": invalid format” em vez disso (em chaves PEM sem uma linha do meio, por exemplo); as causas se sobrepõem.
OpenSSH (ssh, ssh-add, ssh-keygen, git over SSH) — key file could not be parsed
O que significa
O OpenSSH não conseguiu analisar o arquivo da chave privada no próprio formato e então o repassou ao OpenSSL (libcrypto) como uma chave PEM, o que também falhou — por isso o erro informado é o genérico “error in libcrypto”, e não um motivo preciso. No OpenSSH atual (conferido na versão 10.0), quase qualquer dano a um arquivo `OPENSSH PRIVATE KEY` termina aqui: terminações de linha do Windows, a falta da quebra de linha final, uma linha perdida ou uma chave que virou uma única linha. Chaves PEM/PKCS#8 danificadas caem aqui quando truncadas ou reduzidas a uma linha, e arquivos `.ppk` do PuTTY também.
Por que acontece
Terminações de linha do Windows (CRLF)
comumChaves coladas em campos de segredo do CI, editadas no Windows ou obtidas por checkout com `core.autocrlf` ficam com terminações de linha `\r\n`. A análise de chaves no formato OpenSSH falha nesse caso.
A quebra de linha final foi removida
comumMuitos cofres de segredos e construções como `echo -n`/`$(...)` descartam a quebra de linha final. Em chaves no formato OpenSSH, só isso já impede o carregamento.
Linhas perdidas, truncadas ou juntadas
comumVariáveis de ambiente que transformam quebras de linha em espaços, copiar e colar de um chat ou limites de tamanho que cortam a chave.
Não é uma chave OpenSSH nem PEM
ocasionalArquivos `.ppk` do PuTTY, chaves públicas, certificados ou JWKs passados como arquivos de identidade não são chaves privadas que o OpenSSH consiga ler.
Como corrigir
- 1.
Gravar as chaves do CI com os bytes exatos
Remova o `\r`, termine com uma quebra de linha, defina o modo 600 e teste com `ssh-keygen -y` logo em seguida, para que um segredo quebrado faça a etapa de configuração falhar de forma clara.
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.
Examinar o início e o fim do arquivo
O `file`, a primeira linha e os últimos bytes revelam na hora terminações CRLF, a falta da quebra de linha final ou uma chave em uma única linha.
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