SSH keygen : Guide complet pour les débutants
SSH (Secure Shell) est un outil essentiel pour se connecter en toute sécurité à un serveur distant. La méthode d'authentification basée sur des clés SSH, qui offre une sécurité bien plus forte que l'utilisation de mots de passe, est une connaissance essentielle pour tous les développeurs. Dans cet article, nous expliquerons de manière simple et détaillée, eu égard au niveau des débutants, le concept de base de la génération de clés SSH jusqu'à la manière de les utiliser.
Pourquoi avoir besoin de SSH keygen ?
La méthode traditionnelle des mots de passe présente des risques d'exposition pendant l'entrée et est vulnérable aux attaques par force brute. Les clés SSH résolvent ces problèmes en utilisant une paire de clés, une clé publique (Public Key) et une clé privée (Private Key).
- Clé privée (Private Key) : Elle est stockée en toute sécurité sur l'ordinateur de l'utilisateur et ne doit jamais être exposée à l'extérieur. Il faut avoir cette clé pour se connecter au serveur.
- Clé publique (Public Key) : C'est la clé que l'on enregistre sur le serveur auquel on souhaite accéder. Sa publication n'entraîne pas de problèmes de sécurité.
Lors de la connexion SSH, le serveur utilise la clé publique de l'utilisateur pour chiffrer la demande d'authentification, et si la clé privée sur l'ordinateur de l'utilisateur réussit à déchiffrer cette demande, l'accès est autorisé. Cela permet une communication sécurisée sans avoir besoin d'échanger des mots de passe.
Comment créer une clé SSH : la commande ssh-keygen
La commande de base pour créer une clé SSH est ssh-keygen
. Ouvrez le terminal et entrez la commande suivante.
ssh-keygen
Lorsque vous exécutez la commande, plusieurs questions apparaissent. Examinons-les une par une.
-
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
-
C'est la question concernant le chemin de stockage du fichier clé qui sera généré. À moins qu'il n'y ait une raison particulière, il est recommandé d'utiliser le chemin par défaut
.ssh/id_rsa
. Appuyez simplement surEnter
.
-
-
Enter passphrase (empty for no passphrase):
-
C'est la question qui demande si l'on souhaite définir un mot de passe pour la clé privée. Il est fortement recommandé d'en définir un pour renforcer la sécurité. Si un mot de passe est défini, même si la clé privée est exposée, elle ne peut pas être utilisée sans connaître le mot de passe, offrant ainsi une sécurité supplémentaire. Lorsque vous entrez le mot de passe, rien ne s'affiche dans le terminal, soyez donc prudent et appuyez sur
Enter
.
-
-
Enter same passphrase again:
- Vous devez entrer de nouveau le mot de passe que vous avez précédemment saisi pour le confirmer.
-
Résultat attendu :
Your identification has been saved in /home/youruser/.ssh/id_rsa
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx youruser@yourmachine
The key's randomart image is:
+---[RSA 3072]----+
| .=*o. |
| . +.E+ |
| . o.=. . |
| o . o |
| . S . |
| . . |
| . |
| |
| |
+----[SHA256]-----+
Une fois la clé créée, deux fichiers seront générés dans le répertoire ~/.ssh/
.
id_rsa
: clé privée (Private Key)id_rsa.pub
: clé publique (Public Key)
RSA vs. Ed25519 : quel méthode choisir ?
Lors de la création d'une clé SSH, vous pouvez spécifier le type de cryptage de la clé en utilisant l'option -t
avec la commande ssh-keygen
. Les méthodes principalement utilisées sont RSA et Ed25519.
1. Méthode RSA (-t rsa
)
- C'est une méthode largement utilisée depuis les débuts de SSH.
- Sa fiabilité a été vérifiée et est compatible avec la plupart des systèmes.
- Il est possible de spécifier la longueur de la clé, et une longueur de
4096
bits est généralement recommandée.- Exemple :
ssh-keygen -t rsa -b 4096
- Exemple :
2. Méthode Ed25519 (-t ed25519
)
- C'est une méthode de cryptage plus récente, basée sur la cryptographie elliptique Curve25519.
- Par rapport à RSA, elle offre un niveau de sécurité équivalent ou supérieur avec une clé de longueur plus courte.
- La vitesse de création de clé et d'authentification est rapide, et elle utilise moins de ressources.
- Elle est généralement prise en charge par la plupart des systèmes modernes, mais peut ne pas être compatible avec les systèmes très anciens.
- Exemple :
ssh-keygen -t ed25519
- Exemple :
Méthode recommandée et raisons
À ce stade, à moins de rencontrer des problèmes de compatibilité particuliers, il est fortement recommandé d'utiliser la méthode Ed25519.
- Mieux sécurisé : Elle fournit une forte sécurité avec une longueur de clé courte, offrant ainsi une meilleure résistance contre les attaques de type brute force.
- Meilleure performance : Les processus de création et d'authentification des clés sont plus efficaces.
- Simplicité : Vous pouvez générer facilement sans vous soucier de la longueur de la clé, comme c'est le cas avec RSA.
Exemple de création d'une clé Ed25519
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_my_server -C "my_server_ssh_key"
-t ed25519
: génère la clé en utilisant la méthode Ed25519.-f ~/.ssh/id_ed25519_my_server
: précise le nom du fichier clé commeid_ed25519_my_server
. (Vous pouvez choisir un nom différent pour le distinguer de l'ancienneid_rsa
.)-C "my_server_ssh_key"
: ajoute un commentaire à la clé. Il est bon de nommer la clé pour savoir facilement à quelle fin elle a été générée.
Résultat attendu :
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): # Entrez le mot de passe (recommandé)
Enter same passphrase again: # Confirmation du mot de passe
Your identification has been saved in /home/youruser/.ssh/id_ed25519_my_server
Your public key has been saved in /home/youruser/.ssh/id_ed25519_my_server.pub
The key fingerprint is:
SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy my_server_ssh_key
The key's randomart image is:
+--[ED25519 256]--+
| .+=+ |
| . oE B |
| o + O |
| . + + |
| o . S |
| . = . |
| . B + |
| . * = o |
|+ o . = . |
+----[SHA256]-----+
Maintenant, vous comprenez les méthodes de base pour créer et gérer des clés SSH. Enregistre la clé publique générée (id_ed25519_my_server.pub
ou id_rsa.pub
) dans le fichier ~/.ssh/authorized_keys
du serveur distant pour vous connecter en toute sécurité sans mot de passe. Dans le prochain article, nous allons examiner en détail comment enregistrer et utiliser les clés SSH générées sur le serveur.
Si vous avez des questions, n'hésitez pas à les poser dans les commentaires !
Aucun commentaire.