Tech
January 22, 2024

No matching host key type found

Что случилось?

После обновления ssh клиента при попытке зайти на сервер, используя ключ, случается ошибка.

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

Клиент мог обновиться у вас как зависимость при обновлении, например, git.

Проверьте версию командой

ssh -V

Новая версия SSH (с версии SSH 8.8p1) не включает по умолчанию поддержку RSA/SHA1, то есть ssh-rsa. Вместо этого ожидается, что сервер будет использовать RSA/SHA-256/512, вроде как это rsa-sha2-512.

С более новыми серверами, где свежий SSH, скорее всего проблемы не возникнет, но в данном случае хост старенький и было принято решение не обновлять SSH чтобы ошибку исправить.

Более подробная информация по проблеме есть https://www.openssh.com/releasenotes.html

Что делать?

К счастью поддержка RSA/SHA1 осталась и её можно включить, дописав соответствующий конфиг в `~/.ssh/config` (это конфиг клиента, если что)

Host <hostname>
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

Где <hostname> - имя хоста.

Еще можно использовать * чтобы применить настройка ко всем хостам.