Retour SSH: aucun type de clé d’hôte correspondant n’a été trouvé. Leur offre: ssh-dss


81

Je suis habitué à utiliser Putty sur une machine Windows ou un terminal de ligne de commande OSX pour SSH sur un NAS, sans configuration du client.

Ubuntu 16.04 tente de SSH dans le NAS (via un réseau local):

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. Ce résultat / réponse est-il intentionnel?
  2. Existe-t-il une simple correction permettant l’accès SSH au NAS?

Vous n'aviez aucun .pemfichier de clé privée SSH ( ) sur votre ordinateur Windows, n'est-ce pas?
Android Dev

Pas de fichiers .pem sur Windows
gatorback

1
Votre NAS ne serait pas une série Western Digital EX, n'est-ce pas? :)
Adam Plocher Le

C'est un appareil MyCloud: espérons que cela clarifie
gatorback

Réponses:


139

La version d'OpenSSH incluse dans 16.04 désactive ssh-dss. Il existe une page soignée avec des informations héritées qui inclut ce problème: http://www.openssh.com/legacy.html

En bref, vous devriez ajouter l'option -oHostKeyAlgorithms=+ssh-dssà la commande SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Vous pouvez également ajouter un modèle d’hôte à votre ~/.ssh/configordinateur afin de ne pas avoir à spécifier à chaque fois l’algorithme de clé:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Cela présente l'avantage supplémentaire que vous n'avez pas besoin de taper l'adresse IP. Au lieu de cela, sshreconnaîtra l'hôte naset saura où se connecter. Bien sûr, vous pouvez utiliser n'importe quel autre nom à la place.


Je crois que ce sont des solutions du côté Ubuntu. Existe-t-il une option simple du côté du NAS? Il serait bien de comprendre toutes les options et de saisir l’opportunité de durcir toute faille de sécurité. Peut-être que ceci est une autre question pour un autre fil? Très belle explication \ réponse
gatorback

Est-il possible de définir cela globalement? Vous aimez une adresse IP générique? 0.0.0.0 ne fonctionne pas
podarok

2
@podarok, essayezHost *
brownian

10

Éditer le fichier ~ / .ssh / config est la meilleure option. Si vous devez vous connecter à plusieurs hôtes sur le même sous-réseau, vous pouvez utiliser la méthode suivante pour éviter d'entrer chaque hôte dans le fichier:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Cela fonctionne très bien pour moi car j'ai un certain nombre de commutateurs Brocade à gérer et ils ont commencé à se plaindre de la clé de l'hôte après avoir migré vers Ubuntu 16.04.


6

Si vous souhaitez utiliser OpenSSH plus récent pour vous connecter à des serveurs obsolètes:

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

Ajoutez -v si vous voulez voir ce qui se passe et -o HostKeyAlgorithms = ssh-dss si cela ne fonctionne toujours pas:

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

Vous pouvez aussi, bien sûr, éditer / etc / ssh / ssh_config ou ~ / .ssh / ssh_config, et ajouter:

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 mentionne le correctif suivant sur les routeurs Mikrotik:

/ip ssh set strong-crypto=yes

(Notez ceci ici parce que cette réponse apparaît également lors de recherches Web lorsque vous recherchez un message d'erreur similaire.)


il devrait être -o KexAlgorithms = diffie-hellman-group1-sha1 (pas 14)
dalf

Cela dépend ... $ ssh -Que serveur xex diffie-hellman-groupe1-sha1 difficile_hellman-groupe14-sha1 difficile_hellman-groupe-échange-sha1 difficile_hellman-groupe-échange-sha256 ecdh-sha2-nistp256 ecdh- sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf le

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.