L’utilisation de clés SSH est une méthode sûre et pratique pour se connecter à un serveur à distance sans avoir à saisir un mot de passe à chaque fois. Contrairement aux mots de passe, qui peuvent être facilement compromis, les clés SSH offrent une sécurité renforcée grâce à la cryptographie asymétrique. Générer une clé SSH permet de garantir que seules les personnes disposant de la clé privée correspondante peuvent accéder à votre serveur, ce qui réduit les risques d’intrusion et améliore la sécurité du système. Dans cet article, je vais vous montrer comment générer une clé SSH sur un ordinateur sous Linux.
Si vous utilisez un ordinateur avec Windows pour générer des clés, vous pouvez utiliser des logiciels comme PuTTYgen, Git Bash, MobaXterm, Termius ou WSL (Windows Subsystem for Linux) pour accomplir cette tâche.
1. Générer une Clé SSH
Mettre à jour votre système :
sudo apt update && sudo apt upgrade -y
Installer openssh-client si non installé :
sudo apt install openssh-client
Vérifier si une clé SSH est déjà générée :
Ouvrez le terminal et vérifiez si une clé est déjà présente dans le répertoire par défaut
ls ~/.ssh/
Si vous utilisez root, vérifiez dans :
sudo ls /root/.ssh/
Générer la clé SSH :
Exécutez la commande suivante pour générer une clé SSH :
sudo ssh-keygen -t rsa -b 4096 -C "[email protected]"
Détail des arguments de la commande :
ssh-keygen : Il s’agit de l’outil utilisé pour générer des paires de clés SSH (clé privée et clé publique). C’est un utilitaire de base pour la génération de clés, utilisé pour sécuriser les connexions SSH.
-t rsa : Cet argument spécifie le type de clé à générer. Ici, vous utilisez le type RSA, qui est l’un des algorithmes cryptographiques les plus couramment utilisés pour générer des clés SSH.
-b 4096 : Cet argument indique la longueur de la clé en bits. En utilisant 4096, vous générez une clé avec une taille de 4096 bits, ce qui renforce la sécurité par rapport à une clé de 2048 bits (la longueur par défaut). Plus la clé est longue, plus elle est difficile à casser, bien que cela puisse légèrement ralentir les opérations de cryptographie.
-C “[email protected]“ : Cet argument permet d’ajouter un commentaire à la clé SSH pour l’identifier facilement. Il est courant d’utiliser une adresse email, car cela permet de reconnaître rapidement à qui appartient la clé, surtout si plusieurs clés sont en circulation. Cependant, vous pouvez remplacer l’adresse email par un nom personnalisé ou un texte descriptif, comme “projetX” ou “admin_serveur1“, pour donner plus de sens à la clé.
Après avoir lancé la commande, vous serez invité à entrer une phrase secrète (passphrase). Bien que facultative, il est recommandé de définir cette passphrase pour renforcer la sécurité. Même si quelqu’un obtient votre clé privée, ils ne pourront pas l’utiliser sans connaître la phrase secrète. Cependant, si vous préférez ne pas être sollicité à chaque connexion, vous pouvez choisir de ne pas en mettre, mais cela offre moins de protection.
Vous serez ensuite invité à spécifier où enregistrer la clé générée. Appuyez sur Enter pour l’enregistrer à l’emplacement par défaut, soit ~/.ssh/id_rsa, sauf si vous avez une raison spécifique de l’enregistrer ailleurs.
Vérifier les fichiers générés :
Les fichiers de clé seront enregistrés dans le répertoire ~/.ssh/ ou /root/.ssh/ :
Clé privée : ~/.ssh/id_rsa
Clé publique : ~/.ssh/id_rsa.pub
2. Ajouter la Clé SSH au Serveur
Copier la clé publique sur le serveur :
Utilisez la commande suivante pour copier la clé publique sur le serveur :
ssh-copy-id user@server_ip
Remplacez user par votre nom d’utilisateur et server_ip par l’adresse IP du serveur.
Copier manuellement la clé publique :
Si ssh-copy-id n’est pas disponible, vous pouvez copier manuellement la clé publique :
Affichez le contenu de la clé publique :
cat ~/.ssh/id_rsa.pub
Connectez-vous au serveur avec un mot de passe ou une autre méthode et ouvrez le fichier authorized_keys :
nano ~/.ssh/authorized_keys
Collez la clé publique à la fin du fichier.
Sauvegardez les modifications et quittez l’éditeur (Ctrl + O, puis Enter, et Ctrl + X).
3. Tester la connexion SSH :
Après avoir copié la clé, testez la connexion au serveur :
ssh user@server_ip
Si la connexion est réussie, vous n’aurez pas besoin de saisir de mot de passe.
4. Configurer le serveur pour accepter les connexions par clé SSH et désactiver l’authentification par mot de passe :
Après avoir configuré la connexion par clé SSH et vérifié que vous pouvez vous connecter sans utiliser de mot de passe, il est recommandé de désactiver l’authentification par mot de passe pour renforcer la sécurité. Pour ce faire, vous devez modifier le fichier de configuration SSH.
1. Modifier le fichier de configuration SSH
Ouvrez le fichier /etc/ssh/sshd_config avec un éditeur de texte :
sudo nano /etc/ssh/sshd_config
2. Vérifier et activer l’authentification par clé publique
Avant de désactiver l’authentification par mot de passe, assurez-vous que l’authentification par clé publique est bien activée pour éviter tout problème de connexion. Vérifiez que les lignes suivantes sont présentes et ne sont pas commentées (sans le caractère # au début) :
PubkeyAuthentication yes
3. Désactiver l’authentification par mot de passe
Si vous êtes certain à 100 % que vous pouvez vous connecter à votre serveur uniquement avec des clés SSH, vous pouvez alors désactiver l’authentification par mot de passe. Ajoutez ou modifiez la ligne suivante dans le fichier de configuration :
PasswordAuthentication no
4. Redémarrer le service SSH
Après avoir effectué ces modifications, redémarrez le service SSH pour appliquer les changements :
sudo systemctl restart sshd
Avec ces modifications, le serveur n’acceptera plus que les connexions utilisant des clés SSH, désactivant ainsi l’authentification par mot de passe. Cela améliore significativement la sécurité de votre serveur.
Vous avez maintenant appris les étapes essentielles pour générer et utiliser des clés SSH afin de sécuriser vos connexions à distance!
Bonne chance !