Clés SSH pour les serveurs en nuage
Les clés SSH (Secure Shell) sont un élément essentiel de la gestion sécurisée des serveurs en nuage. Elles offrent une méthode d’authentification des utilisateurs plus sûre et plus pratique que les connexions traditionnelles basées sur un mot de passe. En utilisant les clés SSH, vous pouvez établir des connexions sécurisées et cryptées à vos serveurs en nuage, en veillant à ce que seuls les utilisateurs autorisés puissent y accéder. Dans cet article, nous verrons ce que sont les clés SSH, comment elles fonctionnent et comment les configurer sur votre serveur cloud.
1. Que sont les clés SSH ?
Les clés SSH sont des clés cryptographiques utilisées pour authentifier les clients sur un serveur SSH. Au lieu d’utiliser une combinaison de nom d’utilisateur et de mot de passe, qui peut être vulnérable aux attaques par force brute, les clés SSH offrent un moyen plus sûr et automatisé de se connecter à des serveurs distants. Les paires de clés SSH se composent de deux parties :
- La clé privée : Elle est conservée en toute sécurité sur votre machine locale et ne doit jamais être partagée.
- Clé publique : Elle est placée sur le serveur distant. Le serveur utilise la clé publique pour authentifier les utilisateurs sur la base de leur clé privée.
Lors de la connexion à un serveur en nuage, le protocole SSH vérifie que la clé publique du serveur correspond à la clé privée stockée sur votre machine. Si la correspondance est vérifiée, la connexion est établie sans mot de passe.
2. Pourquoi utiliser des clés SSH pour les serveurs en nuage ?
Les clés SSH offrent plusieurs avantages par rapport à l’authentification traditionnelle par mot de passe :
- Sécurité renforcée : Les clés SSH sont beaucoup plus difficiles à pirater que les mots de passe, car elles utilisent des algorithmes cryptographiques pour l’authentification. En outre, les clés SSH ne sont pas vulnérables aux attaques par force brute ou par hameçonnage comme les mots de passe.
- Commodité : Une fois configurées, les clés SSH permettent une authentification sans mot de passe, ce qui facilite la connexion sans avoir à saisir les informations d’identification à chaque fois.
- Automatisation : De nombreux processus et scripts automatisés reposent sur l’authentification par clé SSH, ce qui rend la gestion des serveurs et des déploiements en nuage plus efficace.
- Contrôle d’accès : Les clés SSH peuvent être distribuées uniquement aux utilisateurs autorisés, ce qui vous permet de contrôler qui peut accéder à vos serveurs en nuage.
3. Fonctionnement de l’authentification par clé SSH
Voici une version simplifiée du fonctionnement de l’authentification par clé SSH :
- Le client (votre machine locale) envoie une demande de connexion au serveur.
- Le serveur vérifie si la clé publique du client correspond à l’une des clés stockées dans le fichier ~/.ssh/authorized_keys.
- Si une correspondance est trouvée, le serveur envoie un défi (généralement des données cryptées) au client.
- Le client utilise sa clé privée pour déchiffrer le défi et envoyer une réponse au serveur.
- Le serveur vérifie la réponse et, si elle est correcte, il autorise l’accès au client sans mot de passe.
4. Comment générer des clés SSH
Pour utiliser l’authentification par clé SSH, vous devez d’abord générer une paire de clés. Voici comment procéder :
Sous Linux ou macOS :
- Ouvrez votre terminal.
- Exécutez la commande suivante pour générer une nouvelle paire de clés SSH :
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Voici la signification de chaque option :
- -t rsa : Spécifie l’algorithme RSA.
- -b 4096 : Génère une clé de 4096 bits pour plus de sécurité.
- -C “your_email@example.com” : Ajoute un commentaire pour aider à identifier la clé.
- Vous serez invité à choisir un emplacement pour enregistrer la clé. Par défaut, elle est stockée dans le répertoire ~/.ssh/. Appuyez sur Entrée pour accepter l’emplacement par défaut.
- Vous pouvez également définir une phrase de passe pour plus de sécurité, bien que cela soit facultatif. Si vous ne souhaitez pas utiliser de phrase de passe, appuyez sur Entrée pour la laisser vide.
Sous Windows :
Si vous utilisez Windows, vous pouvez utiliser un client SSH comme PuTTYgen ou la fonction OpenSSH intégrée dans Windows 10 et les versions ultérieures :
- Ouvrez PowerShell ou l’invite de commande.
- Exécutez la même commande que ci-dessus pour générer la paire de clés :
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Après l’exécution de la commande, le processus est le même que sous Linux ou macOS.
5. Ajout de votre clé SSH au serveur cloud
Après avoir généré la paire de clés SSH, vous devez copier la clé publique sur votre serveur cloud pour activer l’authentification basée sur la clé.
Méthode 1 : Utilisation de ssh-copy-id
Sous Linux ou macOS, vous pouvez utiliser la commande ssh-copy-id pour transférer la clé publique vers votre serveur :
ssh-copy-id user@votre-serveur-ip
Cette commande vous invite à saisir votre mot de passe pour le serveur. Une fois le mot de passe saisi, elle copie la clé publique dans le fichier ~/.ssh/authorized_keys sur le serveur.
Méthode 2 : Méthode manuelle
Si vous êtes sous Windows ou si vous préférez les étapes manuelles, vous pouvez copier la clé publique manuellement :
- Ouvrez le fichier de la clé publique à l’aide d’un éditeur de texte :
cat ~/.ssh/id_rsa.pub
- Copiez tout le contenu du fichier.
- Connectez-vous à votre serveur à l’aide d’une session SSH basée sur un mot de passe :
ssh user@votre-ip-serveur
- Sur le serveur, créez le répertoire ~/.ssh s’il n’existe pas :
mkdir -p ~/.ssh
- Ouvrez le fichier authorized_keys :
nano ~/.ssh/authorized_keys
- Collez la clé publique copiée dans le fichier et sauvegardez-le.
- Définissez les autorisations correctes :
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Cela garantit que seul l’utilisateur a un accès en lecture et en écriture à la clé et au répertoire.
6. Désactiver l’authentification par mot de passe (facultatif mais recommandé)
Une fois que les clés SSH sont configurées et fonctionnent, il est fortement recommandé de désactiver l’authentification par mot de passe sur le serveur afin d’empêcher tout accès non autorisé. Voici comment procéder :
- Ouvrez le fichier de configuration SSH sur votre serveur cloud :
sudo nano /etc/ssh/sshd_config
- Trouvez la ligne suivante et remplacez-la par no :
PasswordAuthentication no
- Enregistrez le fichier et redémarrez le service SSH :
sudo systemctl restart sshd
Désormais, seuls les utilisateurs disposant d’une clé SSH valide pourront se connecter.
7. Gestion des clés SSH
- Ajout de plusieurs clés : Si plusieurs utilisateurs doivent accéder au serveur, vous pouvez ajouter leurs clés publiques au fichier authorized_keys.
- Suppression de clés : Si vous souhaitez révoquer l’accès d’un utilisateur spécifique, il vous suffit de supprimer sa clé publique du fichier authorized_keys.
8. Conclusion
L’utilisation de clés SSH pour l’accès aux serveurs en nuage est l’un des meilleurs moyens de sécuriser votre serveur et d’éviter les vulnérabilités associées à l’authentification par mot de passe. En suivant les étapes décrites dans cet article, vous pouvez générer des clés SSH, les ajouter à votre serveur cloud et même désactiver les connexions par mot de passe pour améliorer la sécurité.
La configuration des clés SSH peut nécessiter un peu plus d’efforts au départ, mais la sécurité à long terme et la commodité qu’elles procurent en valent la peine.