Guide de configuration du client pour l’authentification SSH par clé publique (Windows/Linux)

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 utilisez cmd.exe, remplacez $env:USERPROFILE par %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

  1. Authentification désactivée côté serveur :
    Vérifiez que PubkeyAuthentication yes est défini dans /etc/ssh/sshd_config.

  2. Clé non reconnue :
    Assurez-vous que la clé publique est bien dans ~/.ssh/authorized_keys du bon utilisateur.

  3. 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.