J'utilise des connexions SSH basées sur PKI depuis plus de 10 ans. Soudain, après une mise à jour du serveur - certaines connexions ont cessé de fonctionner. J'utilise les mêmes clés PKI que j'utilise depuis des années (chaque serveur a ses propres clés, j'ai un petit jeu de clés personnelles).
Fonctionne - ressemble à ceci:
C:\Users\michael>ssh2 -p 2222 [email protected] date
Authentication successful.
Fri Nov 25 10:30:42 2016
Ne fonctionne pas ressemble à:
C:\Users\michael>ssh2 [email protected] date
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
Qu'est ce qui a changé?
Réponses:
Après une mise à jour - des effets secondaires peuvent entrer en jeu. Avec OpenSSH - les valeurs par défaut changent fréquemment. OpenBSD (qui maintient / développe OpenSSH) a une politique d'OpenBSD de ne pas se soucier de la compatibilité descendante. Cela peut «casser» des choses qui, selon ce que l'on lit, fonctionnent bien.
Il y a un indice massif - que je n'ai pas remarqué quand cela m'est arrivé pour la première fois (en utilisant l'interface graphique, et je l'ai juste cliqué et 'j'étais en colère' avec 'mise à jour stupide - la nouvelle version est cassée'. Il s'avère que la nouvelle version n'a pas été cassé - mais OpenBSD / OpenSSH a commencé à changer les valeurs par défaut d'échange de clés à partir d'OpenSSH-6.7p1 voir: http://www.openssh.com/txt/release-6.7 , notamment:
Mon problème est que j'ai un ancien client qui n'a aucun des nouveaux paramètres par défaut, donc il ne peut pas se connecter.
Deux chemins de solution: réparer / patcher le serveur ou - réparer / patcher le client.
Solution serveur: restaurez les "anciens" paramètres pour que les "anciens" clients puissent continuer à se connecter, c'est-à-dire - conviviaux pour les clients existants - modifiez le fichier sshd_config et rajoutez (suffisamment) des anciens chiffrements.
Les lignes clés à modifier / ajouter dans sshd_config étant:
Ajoutez simplement:
Solution # 2 - Réparer / remplacer le client
Un moyen facile de voir quels chiffrements votre client actuel prend en charge (en supposant que CLI) est
ssh -h
et de voir si cela fournit quelque chose comme:Une autre commande utile est:
ssh -V
Le mien - était - un très vieux client - pour mon bureau. En regardant ci-dessus, vous pouvez voir qu'il ne prend en charge aucun des algorithmes préférés - 15 ans plus tard, pas même un -cbr (rotation), seulement -cbc (copie de bloc).
Si votre client n'a pas d'option pour fournir les clés, etc. pris en charge (OpenSSH devrait avoir l'option
-Q
), il suffit de démarrer une connexion avec vous-même, par exemple,ssh -v localhost
et il y a des lignes comme celle-ci pour vous dire que wat est connu:Et ce qui a été trouvé (et utilisé):
Extra: informations de débogage d'une connexion ayant échoué - plus de détails
Ou, ce qui a été essayé, mais manqué.
Modifier: ajouté le 2 janvier 2017
Nouvelle section - qu'en est-il des touches qui ne fonctionnent plus?
Sur mon serveur, j'ai un «ancien» client et le «dernier» client installé - et j'ai un comportement différent lors de la connexion à un serveur. Ici, le problème n'est pas lié aux erreurs de chiffrement - mais à l'utilisation d'une paire PKI archaïque - basée sur DSA.
En bref, openssh-7 (.3) n'envoie plus (par défaut, peut-être pas du tout) de clés publiques DSA.
Ci-dessous, je compare la sortie de deux versions de openssh
/ usr / bin / ssh (ancienne version, côté gauche) et
/ opt / bin / ssh (nouvelle version, côté droit) - la commande est:
En parcourant la sortie ci-dessous, j'espère que vous remarquerez que les étapes et les messages sont généralement les mêmes. La principale différence vient après la chaîne SSH2_MSG_SERVICE_ACCEPT
Ce que je veux que vous remarquiez, c'est que l'ancienne version offre (et est acceptée par l '«ancien» serveur - la paire de clés basée sur DSA tandis que le nouveau serveur n'offre jamais la clé basée sur DSA.
Remarque: la `` solution '' consiste à ajouter (au moins une des) paires PKI basées sur rsa, ecdsa ou ed25519.
la source
ssh2
s'ils m'auraient accepté - principalement pour la facilité de faire desscp
transferts à partir de la même fenêtre quessh