Secure Shell (SSH) utilise une empreinte digitale généré avec la clé d'hôte de serveur unique afin qu'un client puisse identifier le serveur. Chaque fois que l'empreinte de l'hôte change, SSH émet l'avertissement suivant :L'empreinte de l'hôte ne peut pas être vérifiée ou elle a changé .
Lorsque vous configurez le serveur SSH, la clé d'hôte est générée de manière aléatoire. La clé d'hôte identifie le serveur auquel vous vous connectez et elle est au cœur de la sécurité fournie par SSH. Si quelqu'un met en place un programme pour intercepter une connexion et vole les identifiants de connexion (un man in the middle attaque), le client SSH ne donne qu'unla clé de l'hôte a changé avertissement.
Pourquoi la clé de l'hôte peut changer
Les explications pour une clé d'hôte modifiée incluent :
- Recompilation ou mise à niveau de SSH
- Reconstruction du serveur.
- Utiliser une adresse différente pour le même hôte.
Remarque : Lorsque votre système stocke la clé d'hôte, il l'enregistre par adresse, donc même si localhost et 127.0.0.1 pointe vers le même serveur, un client SSH suppose qu'il s'agit d'une entrée différente.
Cependant, n'écartez pas la possibilité d'un man-in-the-middle attaque et vérifiez l'empreinte digitale de l'hôte à l'aide de la console Web du serveur sans utiliser de connexion SSH.
Avertissement :L'identification de l'hôte distant a changé
Considérez ce message d'erreur :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /home/demo/.ssh/known_hosts to get rid of this message.
Offending key in /home/demo/.ssh/known_hosts:15
RSA host key for 1.2.3.4 has changed and you have requested strict checking.
Host key verification failed.
L'avertissement signifie ce qui suit :L'empreinte digitale qui identifie le serveur SSH est différente de la dernière fois que vous vous y êtes connecté.
Vérifiez l'empreinte SSH de votre serveur
Vous devez écrire l'empreinte digitale SSH du serveur dans un fichier pour vous assurer que vous vous connectez au bon serveur, en particulier lorsque vous vous connectez à partir de plusieurs machines ou d'ordinateurs inconnus, tels que le bureau ou le serveur d'un client.
Si vous ne disposez pas de l'empreinte digitale de l'hôte, vous pouvez utiliser la console Web dans le panneau de configuration Cloud.
La console Web vous permet de vous connecter à votre serveur comme si vous vous connectiez à partir de la console série. Quelque chose qui vous empêche de vous connecter avec SSH n'interfère pas avec la connexion de la console série. Si vous avez besoin d'aide pour ouvrir la console Web, consultez cet article sur la session de la console.
Si vous n'avez pas de nom d'utilisateur ni de mot de passe à utiliser (si vous avez désactivé les mots de passe pour tous les comptes, par exemple), vous pouvez utiliser le Panneau de configuration Cloud pour réinitialiser le mot de passe root du serveur. Ensuite, vous pouvez vous connecter avec les nouveaux identifiants.
Utiliser ssh-keygen
Après vous être connecté au serveur, vous pouvez obtenir l'empreinte de la clé de l'hôte. Exécutez le ssh-keygen
suivant commande contre la clé publique du serveur :
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
Le -l
L'option répertorie l'empreinte digitale et le -f /etc/ssh/ssh_host_rsa_key.pub
L'option indique l'emplacement du fichier de clé publique de l'hôte. Cet emplacement est l'emplacement par défaut pour les serveurs Linux®, mais vous devrez peut-être le trouver à un autre emplacement.
Le résultat est similaire à l'empreinte digitale de votre client SSH, comme illustré dans l'exemple suivant :
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx /etc/ssh/ssh_host_rsa_key.pub (RSA)
Le premier chiffre indique la force de la clé (dans ce cas, 2048 bits). L'empreinte digitale suit, ainsi que l'emplacement de la clé et le type de clé (généralement RSA).
Se connecter à localhost avec SSH
Une autre façon d'obtenir la clé publique consiste à se connecter au serveur SSH en utilisant le client SSH depuis le serveur. Connectez-vous à la console Web puis utilisez le ssh
commande :
ssh localhost
Si vous vous connectez avec SSH à localhost pour la première fois, un avertissement s'affiche. L'avertissement affiche l'empreinte de la clé RSA :
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?
Si vous ne vous connectez pas à localhost pour la première fois, procédez comme suit pour effacer la clé stockée :
-
Accédez au .ssh répertoire de votre compte :
cd ~/.ssh
-
Modifiez les known_hosts fichier, en supprimant la ligne qui commence par localhost .
-
Enregistrez le fichier.
Essayez à nouveau la connexion. Vous devriez voir l'empreinte digitale cette fois.
Remarque :notez l'empreinte digitale pour conserver une trace et utilisez-la pour le reste de cet article.
Terminer la connexion
Comparez l'empreinte obtenue avec celle qui s'affiche lorsque vous vous connectez à distance au serveur. Si elles sont identiques, la connexion est valide. Si ce n'est pas le cas, déconnectez-vous du réseau et essayez la connexion depuis un autre endroit. S'ils diffèrent toujours, contactez l'assistance.
La clé de l'hôte a changé
Si vous obtenez un l'empreinte digitale ne correspond pas à ce que le client attendait avertissement, utilisez les instructions suivantes pour modifier la liste des hôtes connus sur l'ordinateur client avant de vous connecter au serveur.
Linux et macOS X
Sous Linux, macOS® X et d'autres systèmes d'exploitation basés sur Unix®, vous utilisez le ssh
commande pour se connecter à un serveur via SSH. Le ~/.ssh/known_hosts
le fichier contient les clés d'hôte SSH connues.
Vous pourriez voir un known_hosts2 fichier à la place ou en plus de known_hosts . Si les deux fichiers existent, alors le système utilise known_hosts2 lorsque vous établissez une connexion.
Effectuez les étapes suivantes après avoir identifié le fichier :
-
Ouvrez le fichier.
-
Trouvez la ligne qui commence par l'adresse IP ou le nom de domaine du serveur. L'entrée pour l'adresse IP 1.2.3.4 apparaît comme dans l'exemple suivant :
1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwGAAQEA2Km5iIlopDndzSTbiaQZq8ynh8RPrvzBJ7dICnvAZWuH/YeNO+9DPnngzsOiYazwRD/CRSGEGRY6tS3GLclFO3Ae370aafbcq...
-
Supprimez la ligne.
-
Enregistrez le fichier.
La prochaine fois que vous établirez une connexion, vérifiez l'empreinte digitale de l'hôte avant de terminer la connexion.
Windows et PuTTY
Pour les serveurs Windows®, pensez à utiliser PuTTY®. Si vous utilisez un autre programme, consultez votre documentation utilisateur pour savoir où le client stocke ses clés d'hôte connues.
Remarque : Vous avez besoin des droits d'administrateur sur l'ordinateur client pour modifier le registre.
Remarque : Modifiez le registre avec prudence.
PuTTY stocke ses clés d'hôte dans le registre Windows. Effectuez les étapes suivantes pour trouver les clés d'hôte connues :
-
Accédez à Windows menu et entrez
regedit
dans la Recherche ou Exécuter boîte. -
Windows organise le registre sous la forme d'une hiérarchie de dossiers, recherchez donc le dossier suivant :
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
-
Dans le dossier, recherchez une ou plusieurs entrées avec l'adresse IP du serveur auquel vous vous connectez. L'exemple suivant montre une clé chiffrée RSA version 2 au port 22, adresse IP 1.2.3.4 :
rsa2@22:1.2.3.4
-
Faites un clic droit sur l'entrée et sélectionnez Supprimer depuis le menu contextuel. Après avoir reçu un Modifier le registre peut causer des problèmes avertissement, confirmez l'action.
-
Quittez l'éditeur de registre.
Lorsque vous essayez la connexion SSH, vous devriez obtenir un La clé d'hôte du serveur est inconnue avertissement avec l'empreinte digitale. Assurez-vous que cette empreinte digitale et celle obtenue à partir de la console Web correspondent avant d'accepter la connexion.
Résumé
Cet article explique comment obtenir l'empreinte digitale de la clé d'hôte d'un serveur. Envisagez de conserver en lieu sûr les empreintes digitales des clés d'hôte des serveurs auxquels vous vous connectez. Vous pouvez vous référer à ces clés chaque fois que vous avez besoin d'exclure un man-in-the-middle attaque, en particulier lors de l'utilisation de plusieurs clients. Voir Principes de base de la sécurité dans un système Linux pour plus de références.
Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.