Où l’empreinte digitale du serveur SSH est-elle générée / stockée?


44

J'ai installé openssh-server et créé une clé avec ssh-keygen. J'ai ensuite essayé de le tester en utilisant la redirection de port local ssh -L 8080:www.nytimes.com:80 127.0.0.1. Cependant, l'empreinte digitale de clé fournie par cette commande n'est pas l'empreinte digitale de clé obtenue lorsque je l'utilise ssh-keygen -l. Même si je supprime mon répertoire .ssh, j'obtiens toujours la même empreinte digitale, qui n'est pas celle avec laquelle j'ai créé ssh-keygen. Y a-t-il une autre clé sur mon système? Où est cette clé? Comment puis-je sélectionner cette clé pour une utilisation par openssh-server?

Réponses:


59

Lorsque vous créez une session SSH, deux paires de clés différentes (avec une empreinte digitale pour chaque paire) sont impliquées. L'un est la clé de l'utilisateur qui est stockée dans ~/.ssh. L'identité de la clé SSH de l'utilisateur est parfois utilisée comme identifiant pour se connecter à un autre ordinateur (si vous avez configuré une connexion par clé).

L'autre est la clé du serveur SSH. C'est la clé sur laquelle vous voyez l'empreinte lorsque vous vous connectez à un autre serveur pour la première fois. L'identité de cette clé est utilisée pour vous assurer que vous vous connectez au serveur SSH que vous souhaitez. Ceci est important si vous utilisez des mots de passe car vous ne voudriez pas tenter accidentellement de vous connecter à un ordinateur attaquant: l'attaquant obtiendrait votre mot de passe lorsque vous le saisiriez. Il pourrait ensuite se connecter à l'ordinateur sur lequel vous pensiez vous connecter. à! (Ceci est connu comme une "attaque au milieu" ) Les clés utilisées par un serveur SSH pour s'identifier lorsque vous vous connectez à ce dernier sont situées dans /etc/ssh/et sont généralement nommées ainsi ssh_host_rsa_key.

Vous pouvez réellement changer où le serveur SSH cherche la clé dans le fichier avec le paramètre./etc/ssh/sshd_configHostKey /path/to/host/key

Par défaut, ssh-keygencréera une clé pour l'utilisateur actuel, qui, par défaut, sera stockée dans ~/.ssh. Le format d'une clé d'utilisateur et d'une clé de serveur est identique. la différence est l'endroit où ils sont placés et si /etc/ssh/sshd_configune HostKeydirective les a pointés. Lorsque vous installez le paquet openssh-server, il génère automatiquement des clés à utiliser par le serveur. C’est de là que viennent les clés à empreinte inconnue. Si vous souhaitez voir l'empreinte de la clé (RSA *) du serveur SSH, vous pouvez l'exécuter ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.

* Il existe différents algorithmes de cryptage. Chacun utilise une clé différente. Les plus courantes sont DSA (faible), RSA (ancien paramètre par défaut) et ECDSA (nouveau paramètre par défaut).


1
Les résultats Google pour "set ssh fingerprint", même si ces termes sont techniquement incorrects, sont étonnamment mauvais. Bien que j'ai trouvé ça parmi eux.
Bart van Heukelom

4
Merci pour cela. Une remarque: 'sudo' n'est pas obligatoire si vous pointez ssh-keygen sur la clé publique. C'est: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. En outre, pour mon installation, c’était la clé ECDSA, et non la clé RSA, que le démon ssh utilisait. C’est donc ce que j’ai dû exécuter ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements

Existe-t-il un problème pour récupérer les clés publiques de mon ancien disque dur et les utiliser dans ma nouvelle installation, en les écrasant dans / etc / ssh? Une clé est une clé non?
Adam

@ Adam je ne vois pas de problème à le faire. Cela devrait aider à éviter les problèmes lorsque vous vous connectez à distance et que la clé a changé (ce qui se produit si vous réinstallez une nouvelle clé est générée.)
Azendale

3
Lorsque je me connecte sshà un hôte à partir de 14.04, il affiche les empreintes MD5. Pour faire ssh-keygende 16.04 show empreinte MD5, vous devez utiliser -E md5option.
jarno

15

Les clés d’hôte SSH sont stockées /etc/ssh/, ce que vous n’avez généralement pas besoin de choisir. Ces clés ont été générées lors de l'installation du paquet openssh-server.

Vous pouvez répertorier les empreintes digitales des clés, ssh-keygen -l -f /etc/ssh/ssh_host_key.pubmais vous devrez les répéter pour chaque clé publique.

 


7

ssh-keygenne génère pas l’empreinte SSH sur votre serveur. Cela est généré par le serveur SSH. ssh-keygencrée une paire de clés publique / privée pour votre système, que vous pourrez utiliser par la suite pour accéder à votre serveur SSH sans avoir à transmettre un code secret au serveur.

Les empreintes digitales de votre serveur ne s'afficheront évidemment pas comme l'empreinte digitale de la paire de clés publique / privée que vous avez générée, car elles sont séparées les unes des autres.


3
Notez que vous devriez être capable de générer des clés ssh pour votre serveur (contrairement à ce que vous dites) mais il vous suffit de les mettre au bon endroit pour qu'elles soient utilisées à cette fin.
Azendale
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.