Перейти к содержимому
ecdsa.com
OpenSSH client (8.8+) connecting to a server that only offers legacy host key algorithmsSSH

Сообщение об ошибке

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

Также выводится как

  • 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

Хост, порт и предложение сервера меняются. Для обмена ключами текст выглядит как «no matching key exchange method found», для шифров — «no matching cipher found».

Что это означает

У клиента и сервера нет ни одного общего алгоритма ключа хоста, поэтому соединение прерывается на этапе согласования алгоритмов — ещё до проверки хоста и входа. В «Their offer» перечислено то, что предложил сервер. `ssh-rsa` (RSA с SHA-1) и `ssh-dss` (DSA) в OpenSSH 8.8 и новее по умолчанию отключены; серверы, которые больше ничего не предлагают, обычно оказываются старыми специализированными устройствами, роутерами, NAS или системами без обновлений. Вариант с обменом ключами («no matching key exchange method found») выглядит так же и устраняется так же.

Почему это происходит

Как исправить

  1. 1.

    Разрешите устаревший алгоритм только для этого хоста

    Блок `Host` ограничивает SHA-1 только тем устройством, которому это нужно. Никогда не добавляйте `+ssh-rsa` в `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.

    Сгенерируйте на сервере современные ключи хоста

    Обновление прошивки устройства или OpenSSH и генерация ключей хоста Ed25519/ECDSA избавляют от необходимости в исключениях.

    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

Связанные ошибки

Открыть всю базу ошибок подписей