J'essaie d'installer SSH sans mot de passe sur un serveur Ubuntu avec ssh-copy-id myuser@myserver
, mais je reçois le message d'erreur:
Attention: la clé d'hôte ECDSA pour 'myserver' diffère de la clé pour l'adresse IP '192.168.1.123'
Qu'est-ce qui cause cela et comment puis-je le réparer? J'ai essayé de supprimer le .ssh
répertoire sur la machine distante et de l'exécuter ssh-keygen -R "myserver"
localement, mais cela ne résout pas l'erreur.
The ECDSA host key for server has changed
. Mon moyen est de supprimer la chaîne de cache associée à propos du domaine dans~/.ssh/known_hosts
. Ensuite, le SSH fonctionne.Réponses:
Supprimez la clé en cache pour
192.168.1.123
sur la machine locale:la source
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
ensuite, vous n'avez pas besoin de vérifier la nouvelle clé lors de la première connexion à l'hôte.Dans mon cas
ssh-keygen -R ...
, l'avertissement n'a pas été corrigé. J'ai eu des informations supplémentaires comme celle-ci:J'ai simplement modifié
~/.ssh/known_hosts
et supprimé manuellement la ligne 8 ("clé incriminée"). J'ai essayé de me reconnecter, l'hôte a été ajouté en permanence et tout allait bien après!la source
sed -e '8d' /home/myuser/.ssh/known_hosts
, en remplaçant le numéro de ligne8
et le nom du fichier par ceux affichés sur votre système.known_hosts:8
fait référence à une valeur indexée à zéro ou non. Il est bon de savoir qu'il s'agit d'une cartographie 1: 1 ...ssh-keygen -R [hostname]:2022
~/.ssh/known_hosts
, je reçois le message que l'authenticité ne peut pas être établie et "Êtes-vous sûr de vouloir continuer à vous connecter". Répondre "oui" tente et échoue à se connecter. Si j'essaie de me connecter une deuxième fois, j'obtiens la même erreur de clé d'hôte ECDSA que celle avec laquelle j'ai commencé.Je fais beaucoup de ssh-ing entre mes ordinateurs du réseau local et mes deux comptes d’hébergement Web, donc j’ai réglé toutes sortes de problèmes avec SSH, y compris des problèmes d’authentification, qui
ssh -v
permettaient de voir où et quels étaient les problèmes.Ayant juste résolu ce problème et n'étant pas satisfait des réponses, je voulais vraiment savoir "pourquoi" moi-même ...
Le déclencheur de mon cas est le suivant: le nouveau système d'exploitation du serveur installé au travail et lors de l'installation du paquet openssh-server, un nouveau jeu de clés d'hôte a été généré sur le serveur du travail. Auparavant, tous les systèmes d'exploitation de mon serveur étaient Ubuntu et cette fois, Debian a été remplacé (et je suppose qu'il existe une différence nuancée d'autorisations).
Lorsque tous les systèmes d'exploitation étaient Ubuntu et que je réinstalle le système d'exploitation d'un serveur, dès le premier SSH, je reçois ce type d'avertissement, que je préfère par rapport à l'avertissement silencieux ci-dessus!
Ensuite, je m'ouvre ~/.ssh/known_hostssur l'ordinateur à l'origine du SSH, supprime cette ligne, me reconnecte et ceci se produit:
Ce bit à propos de: 11122 est le numéro de port sur lequel je route SSH depuis le pare-feu
J'ai vérifié les sauvegardes d'un ancien serveur Ubuntu et comparé à ma nouvelle installation Debian:
Donc, oui, probablement, l'hôte a commencé à utiliser des clés ecdsa récemment, ce qui, selon les modifications apportées par Ubuntu récemment, serait à l'origine d'une mise à jour. Ubuntu s’est éloigné du système d’exploitation Linux sur lequel j’avais compté, c’est pourquoi j’ai installé Debian cette fois-ci.
J'ai lu le fichier security.SE q / a sur ecdsa et j'ai déjà retiré cette ligne de
sshd_config
mon nouveau serveur Debian. (et couruservice ssh restart
)la source
ubuntu debian server
et vous verrez ce que je veux dire.L'invite se produit à chaque fois car les adresses IP changent tout le temps lors de l'utilisation d'un adressage dynamique. Essayez d’utiliser une adresse IP statique afin de ne devoir ajouter la clé qu’une seule fois.
la source
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
Cela devrait remplacer les clés existantes sous known_hosts.old et en créer une nouvelle. Cette solution a fonctionné pour moi dans le même scénario
la source
J'ai ajouté les lignes suivantes à mon ~ / .ssh / config, désactivant ainsi la vérification stricte de l'hôte pour toutes les adresses .local. (avec l'allocation d'adresse DHCP, les adresses ip de mes machines locales changent constamment)
Vous recevez toujours l'avertissement, ce qui me convient parfaitement.
la source
Utilisez-vous le même utilisateur pour vous connecter?
Si vous êtes connecté à un PC local tel que l'utilisateur John et connecté au serveur B tel que l'utilisateur Adolf @ B et que tout va bien, cela ne signifie pas que tout va bien si vous êtes connecté à un PC local tel que l'utilisateur Jane et que vous vous connectez au serveur. B comme utilisateur Adolf @ B .
Si vous souhaitez vous connecter au serveur B en tant qu'utilisateur Beda du PC A sans mot de passe, essayez cette commande, le tout à partir du PC A :
Cette commande génère la clé et la stocke dans le fichier. S'il vous plaît laissez la phrase secrète vide.
Cette commande crée le répertoire, s'ils n'existent pas déjà. Sinon, n'imprimez pas de message d'erreur.
Cette commande modifie le répertoire dans le répertoire de base de votre utilisateur ./ssh.
Cette commande affiche le fichier id_rsa.pub (votre clé publique) dans authorized_keys sur le serveur.
IMPORTANT: Beda est votre nom d'utilisateur sur le serveur auquel vous vous connectez, B est l'adresse IP de votre serveur.
Maintenant, vous pouvez vous connecter au serveur B sans mot de passe ou phrase secrète:
la source
Le fil ici peut aider.
En gros, vous voulez supprimer les clés RSA et ECDSA de cet hôte, puis les utiliser
ssh-keyscan
pour les replacer dans votreknown_hosts
fichier de manière à ne pas causer ce conflit. Cela a fonctionné pour moi quand j'ai eu le même problème.la source
Question: Qu'est-ce qui cause ça, ...?
La clé d’hôte du serveur ssh a donc changé. Quelle est la cause du changement? C'est dur à dire. Voici quelques hypothèses:
Question: ... et comment puis-je résoudre ce problème?
Comme d’autres ont déjà répondu, supprimez la clé d’hôte ECDSA mise en cache pour myserver que votre compte a mis en cache.
la source
Cette erreur m'a longtemps ennuyé. Pour une raison quelconque, cela ferait une différence si je ferais un
ou
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
m'a ensuite indiqué l'option de modifier le fichier de configuration. Voir mon script https://askubuntu.com/a/949731/129227 pour l'automatisation du processus.
la source
CanonicalizeHostname
etCanonicalDomains
éviterait la suppression et la vérification stricte rendrait ssh hôte et envisager host.domain être même.J'ai corrigé ce problème sur un Chromebook en désinstallant et en réinstallant Secure Shell ... Cela fonctionnait à merveille.
la source
Voici comment supprimer une empreinte digitale d'hôte connue (d'un
known_hosts
fichier) sur un système d'exploitation Chrome:Recherchez l'index de l'entrée de l'hôte incriminé dans la sortie ssh en cas d'échec de la connexion. Par exemple, dans la ligne ci-dessous, l'index incriminé est 7 :
Ouvrez la console JavaScript ( CTRL+ Shift+ J) de la fenêtre Secure Shell et tapez ce qui suit en remplaçant
INDEX
par la valeur appropriée (par exemple 7 ):Cette solution a été empruntée au blog de Leo Gaggl .
la source