J'ai installé openssh-server et créé une clé avec ssh-keygen
. Ensuite, j'ai tenté de le tester en utilisant un transfert de port local en faisant ssh -L 8080:www.nytimes.com:80 127.0.0.1
. Cependant, l'empreinte digitale de clé fournie par cette commande n'est pas celle que j'obtiens lorsque je fais 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 que j'ai créée avec ssh-keygen
. Y a-t-il une autre clé sur mon système? Où se trouve cette clé? Comment puis-je sélectionner cette clé pour être utilisée par openssh-server?
Réponses
Trop de publicités?Lorsque vous créez une session SSH, deux paires de clés différentes (avec une empreinte pour chaque paire) sont impliquées. L'une 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 identifiants pour se connecter à un autre ordinateur (si vous avez configuré une connexion basée sur les clés).
L'autre est la clé du serveur SSH. Il s'agit de la clé pour laquelle vous voyez l'empreinte lorsque vous vous connectez à un serveur différent pour la première fois. L'identité de cette clé est utilisée pour s'assurer que vous vous connectez au serveur SSH que vous avez l'intention de rejoindre. C'est important si vous utilisez des mots de passe car vous ne voudriez pas essayer accidentellement de vous connecter à la machine d'un attaquant : l'attaquant obtiendrait votre mot de passe lorsque vous le tapez. Ensuite, l'attaquant pourrait se connecter à la machine à laquelle vous pensiez vous connecter ! (c'est ce qu'on appelle une attaque de l'homme du milieu) Les clés qu'un serveur SSH utilise pour s'identifier lorsque vous vous y connectez sont situées dans /etc/ssh/
et ont généralement des noms comme ssh_host_rsa_key
.
Vous pouvez en fait modifier l'emplacement où le serveur SSH recherche la clé dans le fichier /etc/ssh/ssh**d**_config
avec le paramètre HostKey /chemin/vers/clé/hôte
.
Par défaut, ssh-keygen
créera une clé pour l'utilisateur actuel, qui, par défaut, sera stockée dans ~/.ssh
. Le format d'une clé utilisateur et d'une clé de serveur est le même ; la différence réside dans l'endroit où elles sont placées et dans le fait que /etc/ssh/sshd_config
contient une directive HostKey
les pointant. Lorsque vous installez le paquet openssh-server, il génère automatiquement des clés pour que le serveur les utilise. C'est là que proviennent les clés avec l'empreinte inconnue. Si vous voulez voir l'empreinte de la clé RSA* du serveur SSH, vous pouvez 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 courants sont DSA (faible), RSA (ancien par défaut) et ECDSA (nouveau par défaut).
Les clés hôtes SSH sont stockées dans /etc/ssh/
, 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 package openssh-server.
Vous pouvez lister l'empreinte des clés en utilisant ssh-keygen -l -f /etc/ssh/ssh_host_key.pub
bien que vous deviez répéter cette opération pour chaque clé publique.
ssh-keygen
ne génère pas l'empreinte SSH sur votre serveur. Celle-ci est générée par le serveur SSH. ssh-keygen
crée une paire de clés publique/privée pour votre système que vous pourrez ensuite utiliser pour accéder à votre serveur SSH sans avoir à transmettre un code secret en clair au serveur.
L'empreinte de votre serveur ne s'affichera évidemment pas comme l'empreinte de la paire de clés publique/privée que vous avez générée, car elles sont distinctes l'une de l'autre.