Повернення SSH: не знайдено відповідного типу хост-ключа. Їх пропозиція: ssh-dss


80

Я звик використовувати Putty на вікні Windows або на терміналі командного рядка OSX для SSH в NAS, без будь-якої конфігурації клієнта.

Ubuntu 16.04 намагається SSH в NAS (через локальну мережу):

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
gatorback

1
Ваш NAS не став би західною цифровою EX-серією, чи не так? :)
Адам Плочер

Це пристрій MyCloud: сподівайтеся, що якимось чином з’ясується
gatorback

Відповіді:


138

Версія 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 не працює
подарок

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:

/ip ssh set strong-crypto=yes

(Відзначаючи це тут, оскільки ця відповідь також з’являється під час пошуку в Інтернеті, коли шукається аналогічне повідомлення про помилку.)


це повинно бути -o KexAlgorithms = diffie-hellman-group1-sha1 (не 14)
dalf

Це залежить ... $ ssh -Q кекс-сервер 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.