Cette erreur particulière se produit pendant la configuration du canal crypté. Si votre système et le système distant ne partagent pas au moins un chiffre, il n'y a pas de chiffre sur lequel se mettre d'accord et aucun canal chiffré n'est possible. Habituellement, les serveurs SSH offrent une petite poignée de chiffrements différents afin de répondre aux différents clients; Je ne sais pas pourquoi votre serveur serait configuré pour n'autoriser que 3DES-CBC.
Maintenant, 3DES-CBC n'est pas terrible. Il est lent et offre moins de sécurité que certains autres algorithmes, mais il n'est pas immédiatement cassable tant que les clés sont sélectionnées correctement. CBC lui-même a quelques problèmes lorsque le texte chiffré peut être modifié en transit, mais je soupçonne fortement que la corruption qui en résulte serait rejetée par le HMAC de SSH, ce qui réduirait l'impact. En bout de ligne, il y a des choix pires que 3DES-CBC, et il y en a de meilleurs. Cependant, soyez toujours prudent lorsque vous remplacez les valeurs par défaut liées à la sécurité, y compris les choix d'algorithmes de chiffrement et d'échange de clés.Ces valeurs par défaut sont les valeurs par défaut pour une raison; certaines personnes assez intelligentes ont dépensé un peu de puissance cérébrale en considérant les options et ont déterminé que ce qui a été choisi comme valeurs par défaut offre la meilleure sécurité globale par rapport au compromis entre les performances.
Comme vous l'avez découvert, vous pouvez utiliser -c ...
(ou -oCiphers=...
) pour spécifier le chiffrement à offrir du côté client. Dans ce cas, l'ajout -c 3des-cbc
n'autorise que 3DES-CBC du client. Étant donné que cela correspond à un chiffrement proposé par le serveur, un canal chiffré peut être établi et la connexion passe à la phase d'authentification.
Vous pouvez également l'ajouter à votre profil personnel ~/.ssh/config
. Pour éviter d'apporter un changement global pour résoudre un problème local, vous pouvez le mettre dans une Host
strophe. Par exemple, si votre configuration SSH indique actuellement (exemple factice):
Port 9922
en spécifiant un port par défaut global 9922 au lieu du port 22 par défaut, vous pouvez ajouter une strophe hôte pour l'hôte qui a besoin d'une configuration spéciale et une strophe hôte globale pour le cas par défaut. Cela deviendrait quelque chose comme ...
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
Host *
Port 9922
L'indentation est facultative, mais je trouve qu'elle améliore considérablement la lisibilité. Les lignes vides et les lignes commençant par #
sont ignorées.
Si vous vous connectez toujours (ou principalement) en tant que même utilisateur sur ce système, vous pouvez également spécifier ce nom d'utilisateur:
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
User enduser
Host *
Port 9922
Vous n'avez pas besoin d'ajouter une Host *
strophe s'il n'y avait rien dans votre ~ / .ssh / config pour commencer, car dans ce cas, seules les valeurs par défaut compilées ou à l'échelle du système (généralement à partir de / etc / ssh / ssh_config) seraient utilisé.
À ce stade, la ligne de commande ssh pour se connecter à cet hôte se réduit à simplement
$ ssh 10.255.252.1
et tous les autres utilisateurs de votre système, ainsi que les connexions à tous les autres hôtes de votre système, ne sont pas affectés par les modifications.