Clés SSH sous Windows : ed25519 avec OpenSSH intégré

3 min
Hébergement VPS/VDS

Une paire de clés est bien plus sûre qu'un mot de passe : la clé privée ne quitte jamais votre PC et les robots qui scannent le port 22 ne peuvent pas la deviner. Windows 10 et 11 incluent déjà OpenSSH ; vous allez donc créer une clé, l'installer sur votre VPS Linux Infrawire, la garder chargée dans le service ssh-agent de Windows, puis désactiver les connexions par mot de passe.

📋 Prérequis

  • Windows 10 ou 11 avec le client OpenSSH (vérifiez avec ssh -V dans PowerShell).
  • Un VPS Linux (Ubuntu 24.04, Debian 12, AlmaLinux 9 ou Rocky 9) sur lequel vous pouvez encore vous connecter par mot de passe : depuis votre espace client vous retrouvez l'IP et le mot de passe root du VPS.
  • Une dizaine de minutes, ainsi qu'une seconde session SSH ou la console du VPS comme filet de sécurité.
PowerShell
ssh -V

🔐 Générer une clé ed25519

Ouvrez PowerShell (normal, pas administrateur) et lancez :

PowerShell
ssh-keygen -t ed25519 -C 'USER@my-pc'

Acceptez le chemin par défaut C:\Users\USER\.ssh\id_ed25519 et saisissez une phrase secrète. Elle chiffre la clé privée sur le disque : un fichier volé est inutilisable. Deux fichiers sont créés : id_ed25519 (privé, ne le partagez jamais) et id_ed25519.pub (public).

📤 Copier la clé publique sur le VPS

Windows n'a pas de ssh-copy-id : installez donc la clé à la main. Affichez d'abord la clé publique et copiez la ligne entière :

PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

Connectez-vous avec votre mot de passe, puis ajoutez cette ligne sur le serveur (remplacez le texte d'exemple par votre vraie clé, entre les apostrophes) :

Bash
ssh root@VPS_IP mkdir -p ~/.ssh && chmod 700 ~/.ssh echo 'ssh-ed25519 AAAA...your-key... USER@my-pc' >> ~/.ssh/authorized_keys sed -i 's/\r$//' ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

La ligne sed retire toute fin de ligne Windows qui rendrait la clé illisible. N'utilisez pas de tube PowerShell vers ssh pour cette opération : Windows PowerShell 5.1 peut ajouter des retours chariot aux données.

🧰 Activer ssh-agent sous Windows

Sans agent, vous devez saisir la phrase secrète à chaque connexion. Le service ssh-agent est installé mais désactivé ou en démarrage manuel par défaut. Dans un PowerShell administrateur :

PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent

Puis, dans un PowerShell normal, chargez votre clé une fois et listez les clés chargées :

PowerShell
ssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l

L'agent conserve la clé après un redémarrage : on ne vous la redemandera plus.

✅ Tester la connexion par clé

Reconnectez-vous. Vous devez obtenir un shell sans que le serveur demande le mot de passe root :

PowerShell
ssh root@VPS_IP

Pour voir précisément la méthode utilisée, ajoutez -v et cherchez Server accepts key et Authenticated to ... using publickey :

PowerShell
ssh -v root@VPS_IP

N'allez pas plus loin tant que cela ne fonctionne pas, et gardez cette session ouverte.

🚫 Désactiver l'authentification par mot de passe sur le serveur

Sous Ubuntu et Debian, /etc/ssh/sshd_config.d/ contient parfois déjà un fichier (comme 50-cloud-init.conf) qui active les mots de passe. SSH retient la première valeur lue : créez donc un fichier qui passe avant. Exécutez ceci en root sur le VPS :

Bash
grep -ri 'PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ cat > /etc/ssh/sshd_config.d/10-keys-only.conf <<'EOF' PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitRootLogin prohibit-password EOF sshd -t && systemctl reload ssh

Sous AlmaLinux/Rocky, le service s'appelle sshd : utilisez systemctl reload sshd. Vérifiez que le sshd_config principal contient bien la ligne Include /etc/ssh/sshd_config.d/*.conf en haut (c'est le cas par défaut). sshd -t n'affiche rien quand la syntaxe est valide.

Depuis une nouvelle fenêtre, vérifiez que les mots de passe sont désormais refusés alors que votre clé fonctionne toujours :

PowerShell
ssh -o PubkeyAuthentication=no root@VPS_IP

La réponse attendue est Permission denied (publickey).

🛠️ Dépannage

Permission denied (publickey). La clé n'est pas dans l'authorized_keys du bon compte, a été collée sur plusieurs lignes ou les permissions sont incorrectes. Sur le serveur, exécutez chmod 700 ~/.ssh et chmod 600 ~/.ssh/authorized_keys, et vérifiez que la ligne commence par ssh-ed25519.

WARNING: UNPROTECTED PRIVATE KEY FILE. D'autres comptes Windows peuvent lire votre clé privée. Limitez-la à votre utilisateur :

PowerShell
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "${env:USERNAME}:F"

Error connecting to agent: No such file or directory. Le service ssh-agent ne tourne pas ; démarrez-le comme indiqué plus haut.

Accès verrouillé après la modification. Utilisez la console du VPS depuis votre espace client, supprimez /etc/ssh/sshd_config.d/10-keys-only.conf, lancez sshd -t et rechargez le service SSH.


🚀 Votre PC Windows se connecte désormais au VPS avec une clé ed25519 et les mots de passe sont désactivés. Gardez une copie de votre clé privée en lieu sûr.

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.