Dans mon /etc/ssh/
répertoire, je peux voir trois que j'ai trois types différents de clés ssh:
-rw------- 1 root root 607 Oct 4 22:43 ssh_Host_dsa_key
-rw-r--r-- 1 root root 623 Oct 4 22:43 ssh_Host_dsa_key.pub
-rw------- 1 root root 241 Oct 4 22:43 ssh_Host_ecdsa_key
-rw-r--r-- 1 root root 194 Oct 4 22:43 ssh_Host_ecdsa_key.pub
-rw------- 1 root root 1602 Oct 4 22:43 ssh_Host_rsa_key
-rw-r--r-- 1 root root 378 Oct 4 22:43 ssh_Host_rsa_key.pub
Quelles sont les différences entre les clés RSA, DSA et ECDSA de ssh, et ai-je besoin des trois?
Veuillez expliquer la différence entre eux et comment les utiliser.
Ce sont vos clés d'hôte qui identifient de manière unique votre hôte. Lorsque OpenSSH est démarré pour la première fois, il générera ces paires de clés. Lorsqu'un client SSH se connecte à votre serveur, il annonce qu'il souhaite authentifier l'hôte à l'aide d'un algorithme particulier. Comme plusieurs sont pris en charge, OpenSSH génère simplement un de chaque type. Cela permet à votre serveur d'être identifié avec plusieurs types d'empreintes digitales.
Tiré de la page de manuel d'OpenSSH, ssh(1)
:
When connecting to a server for the first time, a fingerprint of the server's
public key is presented to the user (unless the option StrictHostKeyChecking
has been disabled). Fingerprints can be determined using ssh-keygen(1):
$ ssh-keygen -l -f /etc/ssh/ssh_Host_rsa_key
If the fingerprint is already known, it can be matched and the key can be
accepted or rejected. If only legacy (MD5) fingerprints for the server are
available, the ssh-keygen(1) -E option may be used to downgrade the fingerprint
algorithm to match.
Les fichiers se terminant par .pub
ne sont pas sensibles. Ils sont transmis à tout client qui tente une connexion. Les fichiers sans cette extension sont les clés privées. Si ceux-ci sont divulgués, n'importe qui pourra usurper l'identité de votre serveur SSH avec n'importe quel client. Les clés privées sont utilisées pour prouver au client que les clés publiques transmises sont en fait la propriété du serveur.
Lors de la connexion à un serveur SSH, une série d'événements a lieu:
known_hosts
.Lors de la première connexion, l'empreinte digitale est affichée à l'utilisateur et l'utilisateur est invité à accepter l'empreinte digitale. Ceci est connu comme [~ # ~] tofu [~ # ~], ou Trust-On-First-Use. Lors des connexions suivantes, l'empreinte digitale est vérifiée en silence et automatiquement. En cas de non-concordance, le client SSH refusera de se connecter et avertira l'utilisateur qu'une attaque MITM peut se produire. Ce comportement garantit que toutes les connexions futures sont authentiques tant que la première connexion est authentique. Une attaque MITM, ou le serveur SSH changeant ses clés d'hôte pour une raison quelconque, invalidera cela et nécessitera une nouvelle authentification.
Vous n'avez pas besoin tous les trois et vous pouvez supprimer l'un d'eux, mais un client SSH ne pourra vérifier l'empreinte de votre serveur que si une empreinte prise en charge est stockée dans le known_hosts
fichier. Au minimum, les clés RSA doivent être conservées. Tous les clients ne prennent pas en charge ECDSA et (EC) DSA a des problèmes de sécurité et n'est généralement plus recommandé. Il n'y a cependant aucun inconvénient à les garder tous. Un bref résumé des algorithmes couramment disponibles du point de vue de la sécurité: