Introduction aux Clés SSH
Les clés SSH (Secure Shell) offrent une méthode d'authentification bien plus sécurisée que les mots de passe traditionnels. Au lieu de taper un mot de passe à chaque connexion, vous utilisez une paire de clés cryptographiques :
- Clé privée : Reste sur votre ordinateur local (ne jamais la partager)
- Clé publique : Installée sur le serveur VPS
Lorsque vous vous connectez, le serveur vérifie que votre clé privée correspond à la clé publique enregistrée. Si la correspondance est validée, vous êtes authentifié instantanément.
Avantages des clés SSH
| Aspect | Mot de passe | Clé SSH |
|---|---|---|
| Sécurité | Vulnérable aux attaques brute-force | Quasi-impossible à craquer |
| Commodité | Saisie manuelle à chaque connexion | Connexion automatique |
| Partage | Risque si divulgué | Clé publique partageable sans risque |
| Longueur | Généralement 8-20 caractères | 2048-4096 bits de cryptage |
| Automatisation | Difficile à scripter | Idéal pour les scripts |
🖥️ Méthode 1 : Générer une Clé SSH sur Windows avec PuTTY
Étape 1 : Télécharger PuTTY et PuTTYgen
PuTTY est le client SSH le plus populaire pour Windows. PuTTYgen est l'utilitaire de génération de clés inclus.
- Rendez-vous sur le site officiel : https://www.putty.org/
- Téléchargez le package d'installation MSI (64-bit ou 32-bit selon votre système)
- Installez PuTTY - PuTTYgen sera automatiquement inclus
Vous pouvez aussi télécharger uniquement puttygen.exe si vous avez déjà PuTTY.
Le fichier puttygen.exe téléchargé
Étape 2 : Lancer PuTTYgen
-
Ouvrez PuTTYgen via :
- Menu Démarrer → Tous les programmes → PuTTY → PuTTYgen
- Ou double-cliquez sur
puttygen.exe
-
L'interface de génération de clés s'affiche :
Interface principale de PuTTYgen
Étape 3 : Configurer les paramètres
Avant de générer la clé, vérifiez les paramètres en bas de la fenêtre :
| Paramètre | Valeur recommandée | Description |
|---|---|---|
| Type of key | RSA ou EdDSA (Ed25519) | Algorithme de chiffrement |
| Number of bits | 4096 (RSA) ou 256 (Ed25519) | Longueur de la clé |
💡 Recommandation : Pour une sécurité maximale, choisissez RSA 4096 bits ou EdDSA (Ed25519) qui est plus moderne et performant.
Étape 4 : Générer la paire de clés
- Cliquez sur le bouton Generate
- Important : Déplacez votre souris de manière aléatoire dans la zone vide pour générer de l'entropie (aléatoire cryptographique)
Déplacez votre souris pour générer l'aléatoire
- Attendez que la barre de progression se remplisse
Étape 5 : Configurer et sauvegarder les clés
Une fois la clé générée, vous verrez cet écran :
Clé SSH générée avec succès
Ajouter une passphrase (recommandé)
La passphrase ajoute une couche de sécurité supplémentaire. Même si quelqu'un obtient votre clé privée, il ne pourra pas l'utiliser sans la passphrase.
Saisie de la passphrase
- Dans Key passphrase, entrez une phrase secrète
- Confirmez dans Confirm passphrase
Sauvegarder la clé privée
- Cliquez sur Save private key
- Choisissez un emplacement sécurisé
- Nommez le fichier (ex:
ma_cle_vps.ppk)
Bouton Save private key
Enregistrement du fichier .ppk
Sauvegarder la clé publique
- Cliquez sur Save public key
- Nommez le fichier (ex:
ma_cle_vps.pub)
Enregistrement de la clé publique
Copier la clé publique au format OpenSSH
Important : Pour les serveurs Linux, vous devez copier la clé au format OpenSSH :
- Sélectionnez tout le texte dans la zone "Public key for pasting into OpenSSH authorized_keys file"
- Copiez-le (Ctrl+C)
- Gardez-le de côté pour l'étape suivante
Le format ressemble à :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDx... rsa-key-20241210
Étape 6 : Configurer PuTTY pour utiliser la clé
- Ouvrez PuTTY
- Dans le menu de gauche, naviguez vers : Connection → SSH → Auth → Credentials
Section Credentials dans PuTTY
- Cliquez sur Browse à côté de "Private key file for authentication"
Sélection de la clé privée
- Sélectionnez votre fichier
.ppk
Fichier .ppk sélectionné
- Retournez à Session, entrez l'IP de votre VPS et sauvegardez la session
🐧 Méthode 2 : Générer une Clé SSH sur Linux/macOS
Étape 1 : Ouvrir le Terminal
- Linux : Ctrl+Alt+T ou cherchez "Terminal"
- macOS : Applications → Utilitaires → Terminal
Étape 2 : Générer la paire de clés
Option A : Clé RSA 4096 bits (compatible universellement)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Option B : Clé Ed25519 (recommandée, plus moderne)
ssh-keygen -t ed25519 -C "[email protected]"
Étape 3 : Suivre les instructions
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/utilisateur/.ssh/id_ed25519):
- Emplacement : Appuyez sur Entrée pour accepter l'emplacement par défaut (
~/.ssh/id_ed25519)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
- Passphrase : Entrez une phrase secrète (recommandé) ou appuyez sur Entrée pour aucune
Étape 4 : Vérifier la création
ls -la ~/.ssh/
Vous devriez voir :
id_ed25519(ouid_rsa) - Clé privéeid_ed25519.pub(ouid_rsa.pub) - Clé publique
Étape 5 : Afficher la clé publique
cat ~/.ssh/id_ed25519.pub
Résultat :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]
Copiez cette ligne complète pour l'installer sur le serveur.
🚀 Installer la Clé Publique sur le VPS
Méthode 1 : Avec ssh-copy-id (Linux/macOS - Recommandée)
La commande ssh-copy-id automatise l'installation :
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@IP_DU_VPS
Exemple :
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
Vous devrez entrer votre mot de passe une dernière fois. Ensuite, la clé sera installée automatiquement.
Méthode 2 : Installation manuelle
Si ssh-copy-id n'est pas disponible :
Étape 1 : Connectez-vous au VPS avec mot de passe
ssh root@IP_DU_VPS
Étape 2 : Créer le dossier .ssh (si nécessaire)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Étape 3 : Créer/éditer le fichier authorized_keys
nano ~/.ssh/authorized_keys
Étape 4 : Coller la clé publique
Collez la clé publique copiée précédemment (une seule ligne).
Pour PuTTY, c'est le contenu de "Public key for pasting into OpenSSH authorized_keys file".
Étape 5 : Sauvegarder et définir les permissions
chmod 600 ~/.ssh/authorized_keys
Étape 6 : Tester la connexion
Déconnectez-vous et reconnectez-vous :
exit
ssh root@IP_DU_VPS
Si tout fonctionne, vous serez connecté sans mot de passe (ou avec votre passphrase si vous en avez défini une).
Méthode 3 : En une seule commande (depuis votre PC local)
cat ~/.ssh/id_ed25519.pub | ssh root@IP_DU_VPS "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
🔒 Sécuriser le Serveur SSH
Une fois les clés SSH configurées, renforcez la sécurité en désactivant l'authentification par mot de passe.
Étape 1 : Éditer la configuration SSH
sudo nano /etc/ssh/sshd_config
Étape 2 : Modifier les paramètres
Recherchez et modifiez ces lignes :
# Désactiver l'authentification par mot de passe
PasswordAuthentication no
# Désactiver les mots de passe vides
PermitEmptyPasswords no
# Activer l'authentification par clé publique
PubkeyAuthentication yes
# Désactiver l'authentification challenge-response
ChallengeResponseAuthentication no
# Optionnel : Désactiver la connexion root (créez un utilisateur sudo d'abord)
# PermitRootLogin no
Étape 3 : Redémarrer le service SSH
sudo systemctl restart sshd
⚠️ Attention : Gardez une session SSH ouverte pendant les tests ! Si la configuration est incorrecte, vous pourriez perdre l'accès.
🛠️ Gestion des Clés SSH
Ajouter plusieurs clés
Vous pouvez autoriser plusieurs clés (plusieurs ordinateurs, plusieurs utilisateurs) :
nano ~/.ssh/authorized_keys
Ajoutez une clé par ligne.
Supprimer une clé
Éditez authorized_keys et supprimez la ligne correspondant à la clé.
Changer la passphrase d'une clé existante
ssh-keygen -p -f ~/.ssh/id_ed25519
Afficher l'empreinte (fingerprint) d'une clé
ssh-keygen -lf ~/.ssh/id_ed25519.pub
🔄 Convertir les Formats de Clés
PPK vers OpenSSH (PuTTY → Linux)
Dans PuTTYgen :
- Chargez votre fichier
.ppkavec Load - Allez dans Conversions → Export OpenSSH key
- Sauvegardez le fichier
OpenSSH vers PPK (Linux → PuTTY)
Dans PuTTYgen :
- Allez dans Conversions → Import key
- Sélectionnez votre clé privée OpenSSH (
id_rsaouid_ed25519) - Cliquez sur Save private key
🔧 Dépannage
"Permission denied (publickey)"
Causes possibles :
- Clé publique non installée sur le serveur
- Mauvaises permissions sur
.sshouauthorized_keys - Clé privée incorrecte utilisée
Solutions :
# Vérifier les permissions (sur le serveur)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# Vérifier que la clé est bien dans authorized_keys
cat ~/.ssh/authorized_keys
"Connection refused"
Causes possibles :
- Service SSH non démarré
- Pare-feu bloquant le port 22
Solutions :
# Vérifier le statut SSH
sudo systemctl status sshd
# Redémarrer si nécessaire
sudo systemctl start sshd
# Vérifier le pare-feu
sudo ufw status
sudo ufw allow 22
"Host key verification failed"
Le serveur a changé (réinstallation, nouvelle IP). Supprimez l'ancienne entrée :
ssh-keygen -R IP_DU_VPS
La passphrase est demandée à chaque connexion
Utilisez ssh-agent pour mémoriser la passphrase :
# Démarrer l'agent
eval "$(ssh-agent -s)"
# Ajouter la clé
ssh-add ~/.ssh/id_ed25519
📋 Récapitulatif des Commandes
| Action | Commande |
|---|---|
| Générer clé RSA 4096 | ssh-keygen -t rsa -b 4096 |
| Générer clé Ed25519 | ssh-keygen -t ed25519 |
| Copier clé vers serveur | ssh-copy-id -i ~/.ssh/id_ed25519.pub user@IP |
| Afficher clé publique | cat ~/.ssh/id_ed25519.pub |
| Tester connexion verbose | ssh -v user@IP |
| Changer passphrase | ssh-keygen -p -f ~/.ssh/id_ed25519 |
| Voir fingerprint | ssh-keygen -lf ~/.ssh/id_ed25519.pub |
📁 Structure des Fichiers SSH
~/.ssh/
├── authorized_keys # Clés publiques autorisées (sur le serveur)
├── id_ed25519 # Clé privée Ed25519 (sur le client)
├── id_ed25519.pub # Clé publique Ed25519 (sur le client)
├── id_rsa # Clé privée RSA (sur le client)
├── id_rsa.pub # Clé publique RSA (sur le client)
├── known_hosts # Empreintes des serveurs connus
└── config # Configuration personnalisée (optionnel)
Permissions requises
| Fichier/Dossier | Permission | Commande |
|---|---|---|
~/.ssh/ | 700 | chmod 700 ~/.ssh |
authorized_keys | 600 | chmod 600 ~/.ssh/authorized_keys |
| Clé privée | 600 | chmod 600 ~/.ssh/id_ed25519 |
| Clé publique | 644 | chmod 644 ~/.ssh/id_ed25519.pub |
💡 Bonnes Pratiques
-
Utilisez Ed25519 pour les nouvelles clés (plus sécurisé et performant que RSA)
-
Définissez toujours une passphrase sur vos clés privées
-
Ne partagez jamais votre clé privée - seule la clé publique doit être copiée
-
Sauvegardez vos clés dans un endroit sécurisé (gestionnaire de mots de passe, coffre-fort)
-
Utilisez des clés différentes pour des usages différents (travail, personnel, serveurs critiques)
-
Désactivez l'authentification par mot de passe une fois les clés configurées
-
Auditez régulièrement le fichier
authorized_keyspour supprimer les clés inutilisées -
Changez vos clés périodiquement (tous les 1-2 ans minimum)
❓ FAQ
Quelle est la différence entre RSA et Ed25519 ?
| Aspect | RSA | Ed25519 |
|---|---|---|
| Sécurité | Excellente (4096 bits) | Excellente (256 bits) |
| Performance | Plus lent | Plus rapide |
| Taille de clé | Grande | Petite |
| Compatibilité | Universelle | Très bonne (post-2014) |
Recommandation : Ed25519 pour les nouveaux déploiements, RSA pour la compatibilité avec d'anciens systèmes.
Puis-je utiliser la même clé pour plusieurs serveurs ?
Oui, vous pouvez installer la même clé publique sur plusieurs serveurs. Cependant, pour une sécurité optimale, utilisez des clés différentes pour des environnements critiques.
Comment ajouter un commentaire à ma clé ?
Le paramètre -C permet d'ajouter un commentaire :
ssh-keygen -t ed25519 -C "laptop-travail-2024"
Est-ce que les clés SSH expirent ?
Non, les clés SSH n'ont pas de date d'expiration intégrée. C'est à vous de les faire tourner régulièrement.


