Mensagem de erro
Load key "/path/to/key": invalid format
O caminho é preenchido a cada execução. O texto depende da biblioteca criptográfica com que o OpenSSH foi compilado: com OpenSSL 1.1 ou LibreSSL (macOS), todas as falhas abaixo imprimem “invalid format”; builds com OpenSSL 3 (Ubuntu 22.04 e posteriores, Debian 12 e posteriores) imprimem “error in libcrypto” na maioria delas e mantêm “invalid format” para chaves danificadas em formato PEM. Um caractere alterado dentro do corpo gera “unknown or unsupported key type” em todos esses builds.
OpenSSH — ssh, ssh-keygen, ssh-add
O que significa
O OpenSSH tentou carregar um arquivo de chave privada e não conseguiu analisá-lo em nenhum formato que conhece (OPENSSH PRIVATE KEY, PKCS#8, PEM legado). O arquivo está danificado, truncado, em outro formato, como o .ppk do PuTTY, ou nem é uma chave privada — é uma falha de formato de arquivo, anterior a qualquer frase secreta ou interação com o servidor.
Por que acontece
Copiar e colar danificou a chave
comumChaves que passam por chat, e-mail ou terminal perdem a quebra de linha final, ganham quebras automáticas de linha ou caracteres tipográficos, ou ficam sem os hifens finais. O corpo base64 de um bloco OPENSSH PRIVATE KEY é sensível ao tamanho; um caractere perdido invalida o arquivo. (Só a falta da quebra de linha final já é uma causa clássica.)
Arquivo .ppk do PuTTY usado com o OpenSSH
comumO formato de chave do PuTTY (“PuTTY-User-Key-File-2: ...”) não é o do OpenSSH. Apontar ssh -i para um .ppk falha exatamente aqui; a chave precisa ser convertida uma vez.
Chave pública no lugar da chave privada
comumssh -i id_ecdsa.pub (o arquivo .pub) ou uma linha de authorized_keys salva como arquivo de identidade — o carregador de chaves privadas encontra conteúdo de chave pública e relata formato inválido.
Arquivo truncado ou sincronizado pela metade
ocasionalUm arquivo de chave sincronizado com a nuvem ou interrompido no scp, cortado no meio do corpo, é lido como lixo. Reproduzido: truncar um arquivo de chave válido gera exatamente “invalid format” no OpenSSH 8.4 e no macOS.
Como corrigir
- 1.
Examinar primeiro as linhas de delimitação
A primeira e a última linha, mais um teste de validade (-y imprime a chave pública se — e somente se — a chave privada puder ser analisada), identificam o tipo de falha em segundos.
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.
Converter chaves do PuTTY para o formato OpenSSH
Conversão única com o puttygen; depois disso, a chave funciona com ssh, ssh-add e ssh-agent.
bash puttygen key.ppk -O private-openssh -o ~/.ssh/id_converted chmod 600 ~/.ssh/id_converted - 3.
Transferir chaves sem perdas
Mova arquivos de chave com scp/rsync em vez da área de transferência, mantenha as permissões em 600 e, se a chave privada não puder ser recuperada, gere um novo par — o OpenSSH moderno prefere Ed25519.
bash scp -p old-host:~/.ssh/id_ecdsa ~/.ssh/ # or start clean: ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519