Pular para o conteúdo
ecdsa.com
OpenSSHOutras ferramentas

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

Como corrigir

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

Erros relacionados

Ver toda a base de erros de assinatura