Pular para o conteúdo
ecdsa.com
OpenSSH client (8.8+) connecting to a server that only offers legacy host key algorithmsSSH

Mensagem de erro

Unable to negotiate with 127.0.0.1 port 22: no matching host key type found. Their offer: ssh-rsa

Também aparece como

  • no matching host key type found. Their offer: ssh-rsa,ssh-dss
  • Unable to negotiate with 127.0.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1

O host e a porta, assim como a oferta do servidor, variam. Para a troca de chaves, o texto é “no matching key exchange method found”; para cifras, “no matching cipher found”.

O que significa

Cliente e servidor não têm nenhum algoritmo de chave de host em comum, então a conexão para durante a negociação de algoritmos — antes da verificação do host ou do login. “Their offer” lista o que o servidor propôs. `ssh-rsa` (RSA com SHA-1) e `ssh-dss` (DSA) vêm desativados por padrão no OpenSSH 8.8 e posteriores; servidores que não oferecem nada além disso costumam ser equipamentos antigos, roteadores, NAS ou sistemas sem atualizações. A variante da troca de chaves (“no matching key exchange method found”) tem a mesma forma e as mesmas soluções.

Por que acontece

Como corrigir

  1. 1.

    Permitir o algoritmo legado só para esse host

    Um bloco `Host` mantém o SHA-1 restrito ao dispositivo que precisa dele. Nunca coloque `+ssh-rsa` em `Host *`.

    text
    # ~/.ssh/config - re-enable the legacy algorithm for that one device only
    Host old-switch.lan
      HostKeyAlgorithms +ssh-rsa
      PubkeyAcceptedAlgorithms +ssh-rsa
  2. 2.

    Dar ao servidor chaves de host modernas

    Atualizar o firmware do dispositivo ou o OpenSSH e gerar chaves de host Ed25519/ECDSA elimina a necessidade de exceções.

    bash
    # On the server: generate modern host keys and let sshd offer them
    ssh-keygen -A                                   # creates missing ed25519/ecdsa host keys
    sshd -T | grep -E "^hostkeyalgorithms|^hostkey "  # what the server will offer

Erros relacionados

Ver toda a base de erros de assinatura