Aperçu
Cet article explique les étapes de configuration côté client pour établir une connexion sécurisée à un serveur en utilisant l’authentification SSH par clé publique.
Les instructions couvrent à la fois Windows et Linux.
Conditions préalables
- Un client SSH est déjà installé (par défaut sur Windows 10+ et toutes les distributions Linux récentes)
- Le serveur distant autorise l’authentification par clé publique
- Un utilisateur existe sur le serveur cible
Types de clés et algorithmes de chiffrement
Les principaux types de clés SSH sont : RSA, ECDSA et Ed25519.
Le tableau ci-dessous résume leurs caractéristiques, usages recommandés et compatibilité.
| Type de clé | Caractéristiques | Usage recommandé | Compatibilité |
|---|---|---|---|
| RSA | Ancien standard largement supporté, longueur de clé variable. | Environnements anciens ou à compatibilité élevée. | Très élevée |
| ECDSA | Utilise la cryptographie à courbe elliptique, plus rapide que RSA. | Environnements orientés performance. | Moyenne |
| Ed25519 | Standard moderne, rapide, très sécurisé, clé courte. | Nouvelles configurations, priorité à la sécurité. | Requiert OpenSSH ≥ 6.5 |
Ed25519 est aujourd’hui le standard recommandé pour la plupart des déploiements modernes. RSA reste nécessaire pour les anciens équipements ou environnements conformes FIPS.
ECDSA se situe entre les deux en termes de compatibilité et performance.
Variables utilisées
| Variable | Exemple | Description |
|---|---|---|
<<USERNAME>> |
exampleuser |
Nom d’utilisateur local sur le client |
<<SERVER>> |
192.168.1.10 |
Nom d’hôte ou adresse IP du serveur distant |
<<USER>> |
ubuntu ou ec2-user |
Nom d’utilisateur SSH sur le serveur |
<<EMAIL_ADDRESS>> |
user@example.com |
Commentaire facultatif pour identifier la clé |
Remarque – Windows :
Les commandes sont données pour PowerShell.
Si vous utilisezcmd.exe, remplacez$env:USERPROFILEpar%USERPROFILE%.
Client Windows
Étape 1 : Génération de la paire de clés
Ouvrez PowerShell (mode administrateur) et exécutez :
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Exemple de sortie :
Generating public/private ed25519 key pair.
Enter file in which to save the key (/C:/Users/<<USERNAME>>/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Clé publique :
$env:USERPROFILE\.ssh\id_ed25519.pub
Clé privée :$env:USERPROFILE\.ssh\id_ed25519
Étape 2 : Copie de la clé publique sur le serveur
cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
Vous pouvez également copier le contenu manuellement dans ~/.ssh/authorized_keys sur le serveur.
Étape 3 : Test de connexion
ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>
Répondez yes à la première connexion pour accepter la clé de l’hôte.
Client Linux
Étape 1 : Génération de la paire de clés
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Clé publique :
~/.ssh/id_ed25519.pub
Clé privée :~/.ssh/id_ed25519
Étape 2 : Enregistrement de la clé sur le serveur
ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>
Ou copiez manuellement le contenu dans ~/.ssh/authorized_keys.
Étape 3 : Vérification de la connexion
ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Utilisation d’une clé avec mot de passe (passphrase)
Pour éviter de retaper la passphrase à chaque connexion, configurez SSH Agent.
Étape 1 : Démarrage de l’agent
Windows :
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Linux :
eval "$(ssh-agent -s)"
Pour un démarrage automatique :
- Windows :
Set-Service -Name ssh-agent -StartupType Automatic - Linux :
Ajoutez dans~/.bashrc:eval "$(ssh-agent -s)" > /dev/null
Étape 2 : Enregistrement de la clé
Windows :
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Linux :
ssh-add ~/.ssh/id_ed25519
Vérification :
ssh-add -l
Fichier de configuration du client (config)
Pour éviter de répéter les paramètres à chaque fois, créez un fichier de configuration :
Exemple
Host myserver
HostName <<SERVER>>
User <<USER>>
IdentityFile ~/.ssh/id_ed25519
Port 22
Sous Windows :
C:\Users\<<USERNAME>>\.ssh\config
Connexion simplifiée
ssh myserver
Gestion de plusieurs serveurs
Host web
HostName 192.168.1.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host db
HostName 192.168.1.11
User ec2-user
IdentityFile ~/.ssh/id_ed25519
Pour plus de sécurité, utilisez une clé différente par serveur et précisez-la dans chaque bloc
Host.
Vérification et débogage
Activez les logs détaillés :
ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Succès :
debug1: Authentication succeeded (publickey)
Dépannage
-
Authentification désactivée côté serveur :
Vérifiez quePubkeyAuthentication yesest défini dans/etc/ssh/sshd_config. -
Clé non reconnue :
Assurez-vous que la clé publique est bien dans~/.ssh/authorized_keysdu bon utilisateur. -
Erreur de connexion ou de droits :
Vérifiez le nom d’utilisateur, l’adresse du serveur et les permissions des fichiers SSH.
Conclusion
L’authentification SSH par clé publique permet des connexions sécurisées sans mot de passe.
Grâce à ssh-keygen intégré, la configuration est simple sur Windows comme sur Linux.
La gestion correcte des clés et des permissions est essentielle pour garantir la sécurité et la fiabilité des connexions.
