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 [email protected]

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?
gatorback
źródło
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 [email protected]

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.

Kalle Elmér
źródło
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.

truxpin
źródło
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).

Dagelf
źródło
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 [email protected]
Dagelf