Zwraca SSH: nie znaleziono pasującego typu klucza hosta. Ich oferta: ssh-dss


80

Jestem przyzwyczajony do używania Putty na Windowsie lub terminalu wiersza poleceń OSX do SSH na NAS, bez jakiejkolwiek konfiguracji klienta.

Ubuntu 16.04 próbuje SSH na serwerze NAS (przez 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. Czy ten wynik / odpowiedź jest zamierzona?
  2. Czy istnieje prosta korekta, która umożliwia dostęp SSH do NAS?

Nie masz żadnych .pemplików kluczy prywatnych SSH ( ) na komputerze z systemem Windows, prawda?
Android Dev

Brak plików .pem w oknie Windows
gatorback

1
Twój NAS nie byłby serią Western Digital EX, prawda? :)
Adam Plocher

To urządzenie MyCloud: mam nadzieję, że jakoś to wyjaśnia
gatorback

Odpowiedzi:


138

Wersja OpenSSH zawarta w 16.04 wyłącza ssh-dss. Jest ładna strona ze starszymi informacjami, która obejmuje ten problem: http://www.openssh.com/legacy.html

Krótko mówiąc, należy dodać opcję -oHostKeyAlgorithms=+ssh-dssdo polecenia SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Możesz również dodać wzorzec hosta, ~/.ssh/configaby nie trzeba było określać algorytmu klucza za każdym razem:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Ma to tę dodatkową zaletę, że nie trzeba wpisywać adresu IP. Zamiast tego sshrozpozna hosta nasi będzie wiedział, gdzie się połączyć. Oczywiście możesz zamiast niego użyć dowolnej innej nazwy.


Uważam, że są to rozwiązania po stronie Ubuntu. Czy istnieje prosta opcja po stronie NAS? Byłoby miło zrozumieć wszystkie opcje i skorzystać z okazji, aby wzmocnić wszelkie słabości bezpieczeństwa. Może to kolejne pytanie do innego wątku? Bardzo ładne wyjaśnienie \ odpowiedź
gatorback

Czy można to ustawić globalnie? Lubisz wieloznaczny adres IP? 0.0.0.0 nie działa
podarok

2
@podarok, spróbujHost *
Browna

10

Edycja pliku ~ / .ssh / config jest najlepszą opcją. Jeśli masz wiele hostów, z którymi możesz się połączyć w tej samej podsieci, możesz użyć następującej metody, aby uniknąć wprowadzania każdego hosta w pliku:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Działa to dla mnie świetnie, ponieważ mam kilka przełączników Brocade do zarządzania, a oni zaczęli narzekać na klucz Host po przejściu na Ubuntu 16.04.


6

Jeśli chcesz używać nowszej wersji OpenSSH do łączenia się z przestarzałymi serwerami:

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

Dodaj -v, jeśli chcesz zobaczyć, co się dzieje, i -o HostKeyAl algorytmy = ssh-dss, jeśli nadal nie działa:

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

Możesz również oczywiście edytować / etc / ssh / ssh_config lub ~ / .ssh / ssh_config i dodać:

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 wspomina o następującej poprawce na routerach Mikrotik:

/ip ssh set strong-crypto=yes

(Zwracając uwagę na to tutaj, ponieważ ta odpowiedź pojawia się również podczas wyszukiwania w Internecie, gdy szuka się podobnego komunikatu o błędzie).


powinno być -o KexAlgorytmy = diffie-hellman-group1-sha1 (nie 14)
dalf

To zależy ... $ ssh -Q serwer 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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.