SSH возвращает: не найден соответствующий тип ключа хоста. Их предложение: ssh-dss

Я привык использовать Putty в Windows box или терминале командной строки OSX для подключения SSH к NAS без какой-либо настройки клиента.

Ubuntu 16.04 пытается подключиться по SSH к NAS (через локальную сеть):

ssh root@192.168.8.109Unable to negotiate with 192.168.8.109 port 22: no matching host key type found. Their offer: ssh-dss
  1. Является ли этот результат / ответ преднамеренным?
  2. Существует ли простое исправление, которое позволяет получить доступ по SSH к NAS?

Версия OpenSSH, включенная в 16.04, отключает ssh-dss. Есть аккуратная страница с устаревшей информацией, которая включает в себя эту проблему: http://www.openssh.com/legacy.html

В двух словах, вы должны добавить опцию -oHostKeyAlgorithms=+ssh-dss к команде SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Вы также можете добавить шаблон хоста в свой ~/.ssh/config таким образом, вам не нужно каждый раз указывать ключевой алгоритм:

Host nas  HostName 192.168.8.109  HostKeyAlgorithms=+ssh-dss

Это имеет дополнительное преимущество в том, что вам не нужно вводить IP-адрес. Вместо, ssh распознает хозяина nas и знать, к чему подключиться. Конечно, вы можете использовать вместо него любое другое имя.

Если вы пришли сюда, потому что Bitbucket возвращает следующее после обновления до OpenSSH 8.8:

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

вам следует НЕ включить DSS (как в принятом ответе), а скорее RSA в ~/.ssh/config:

Host bitbucket.org    HostKeyAlgorithms +ssh-rsa    PubkeyAcceptedKeyTypes +ssh-rsa

Ссылка: https://community.atlassian.com/t5/Bitbucket-articles/OpenSSH-8-8-client-incompatibility-and-workaround/ba-p/1826047

Обратите внимание, что PubkeyAcceptedKeyTypes является обратно совместимым псевдонимом для PubkeyAcceptedAlgorithms который был предложен в статье. Если вы используете его, ту же конфигурацию можно использовать со старыми версиями клиента OpenSSH, например, если вы совместно используете конфигурацию с контейнерами docker.

Вы можете сделать то же самое для других хостов или использовать Host * чтобы разрешить RSA для любого хоста.

Редактирование файла ~/.ssh/config - лучший вариант. Если у вас есть несколько хостов для подключения в одной подсети, вы можете использовать следующий метод, чтобы избежать ввода каждого хоста в файл:

 Host 192.168.8.*  HostKeyAlgorithms=+ssh-dss

Это отлично работает для меня, так как у меня есть несколько коммутаторов Brocade для управления, и они начали жаловаться на ключ хоста после того, как я перешел на Ubuntu 16.04.

Если вы хотите использовать более новый OpenSSH для подключения к устаревшим серверам:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-dss my.host.com

Добавьте -v, если вы хотите посмотреть, что происходит, и -o HostKeyAlgorithms=ssh-dss, если он все еще не работает:

ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com

Вы также можете, конечно, отредактировать /etc/ssh/ssh_config или ~/.ssh/ssh_config и добавить:

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*    HostKeyAlgorithms ssh-dss    KexAlgorithms diffie-hellman-group1-sha1    

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 упоминается следующее исправление для маршрутизаторов Mikrotik:

/ip ssh set strong-crypto=yes

(Здесь ничего подобного, потому что этот ответ также появляется при поиске в Интернете при поиске аналогичного сообщения об ошибке.)

Для меня это добавило в .ssh\config работал:

Host *HostkeyAlgorithms +ssh-dssPubkeyAcceptedKeyTypes +ssh-dss

Это сработало:

sudo nano /etc/ssh/ssh_config

добавить в новую пустую строку:

HostKeyAlgorithms ssh-rsa,ssh-dssPubkeyAcceptedKeyTypes ssh-rsa,ssh-dss

Не было необходимости перезагружать / перезапускать SSHd.

ssh -v также показывает дополнительные сведения, если это необходимо.

Ваш NAS случайно не относится к серии Western Digital EX-series, не так ли? :slight_smile:

У вас не было никаких файлов закрытого ключа SSH (.pem) на вашем компьютере с Windows, не так ли?

Нет .pem файлов в Windows box

Это устройство MyCloud: надеюсь, это как-то прояснит

Видишь web hosting - Unable to negotiate with XX.XXX.XX.XX: no matching host key type found. Their offer: ssh-dss - Stack Overflow и особенно ssh - Why OpenSSH deprecated DSA keys - Information Security Stack Exchange