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


81

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

Ubuntu 16.04 пытается SSH войти в NAS (через LAN):

ssh root@192.168.8.109

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

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

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

1
Ваш NAS не будет серией Western Digital EX, не так ли? :)
Адам Плохер

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

Ответы:


139

Версия 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и знать, где подключиться. Конечно, вы можете использовать любое другое имя вместо него.


Я считаю, что это решения на стороне Ubuntu. Есть ли простой вариант на стороне NAS? Было бы хорошо, чтобы понять все варианты и воспользоваться возможностью, чтобы укрепить любую слабость безопасности. Может быть, это другой вопрос для другой темы? Очень хорошее объяснение \ ответ
gatorback

Можно ли установить это глобально? Как подстановочный знак IP? 0.0.0.0 не работает
Podarok

2
@podarok, попробуйтеHost *
броуновское

10

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

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

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


6

Если вы хотите использовать более новую версию 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 Routerboards:

/ip ssh set strong-crypto=yes

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


это должно быть -o KexAlgorithms = diffie-hellman-group1-sha1 (не 14)
17

Это зависит ... $ ssh -Q kex сервер diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh- sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.