creating ssh key on windows

creating ssh key on windows

Arrêtez de taper votre mot de passe à chaque fois que vous poussez du code sur GitHub ou que vous vous connectez à votre serveur distant. C'est une perte de temps monumentale. Si vous développez sous l'écosystème Microsoft, l'étape de Creating SSH Key on Windows est le premier geste technique qui sépare l'amateur du professionnel efficace. On ne parle pas ici d'une simple option de confort, mais d'une nécessité absolue pour sécuriser vos échanges de données. La méthode a radicalement changé ces dernières années. Oubliez les vieux tutoriels qui vous forcent à installer des usines à gaz juste pour générer un petit fichier texte. Aujourd'hui, tout se passe directement dans votre terminal, avec des outils intégrés au système.

Pourquoi la méthode classique a changé

Pendant longtemps, les utilisateurs PC étaient les parents pauvres de la gestion des accès sécurisés. Il fallait installer PuTTY, jongler avec des formats de fichiers .ppk bizarres et convertir des clés sans arrêt pour qu'elles fonctionnent avec des outils Linux. C'était l'enfer. Microsoft a fini par comprendre le message. Depuis quelques versions de Windows 10 et maintenant sous Windows 11, OpenSSH est installé nativement. C'est une révolution silencieuse.

Le passage à Ed25519

On voit encore trop de gens utiliser l'algorithme RSA. C'est vieux. C'est lent. RSA repose sur la difficulté de factoriser de grands nombres, mais avec la puissance de calcul actuelle, il faut des clés de 4096 bits pour être tranquille. Je vous conseille de passer à Ed25519. C'est une courbe elliptique. C'est beaucoup plus court, beaucoup plus rapide et, surtout, c'est considéré comme plus sûr par la communauté cryptographique actuelle. Si votre serveur est moderne, ne vous posez même pas la question.

OpenSSH contre PuTTY

Certains barbus ne jurent que par PuTTYgen. Je les respecte, mais franchement, c'est devenu inutile pour 95 % des tâches quotidiennes. Utiliser les outils natifs permet une intégration parfaite avec VS Code ou Windows Subsystem for Linux (WSL). Vous restez dans le même environnement. Vous ne multipliez pas les logiciels. C'est propre.

La procédure concrète pour Creating SSH Key on Windows

Ouvrez votre terminal. Pas l'invite de commande des années 90, mais bien le Windows Terminal ou PowerShell. C'est là que tout commence. La commande magique est ssh-keygen. C'est l'outil standard universel.

Tapez simplement ssh-keygen -t ed25519 -C "votre_email@exemple.com". L'argument -t spécifie le type d'algorithme. Le -C ajoute un commentaire à la fin du fichier, ce qui permet de savoir à qui appartient cette clé quand vous en avez des dizaines sur un serveur. Le système va vous demander où enregistrer le fichier. Par défaut, c'est dans votre dossier utilisateur, sous un dossier caché nommé .ssh. Laissez ce chemin par défaut. Si vous changez le nom du fichier, certains logiciels ne le trouveront pas automatiquement. C'est une erreur classique de débutant.

L'importance de la passphrase

Le terminal va vous proposer d'ajouter une passphrase. C'est une protection supplémentaire. Si quelqu'un vole votre ordinateur ou accède à votre disque dur, il ne pourra pas utiliser votre clé sans ce code. Est-ce que c'est contraignant ? Oui, un peu. Mais avec l'agent SSH dont on parlera plus tard, vous ne la tapez qu'une fois par session. Ne laissez pas ce champ vide pour vos accès de production. C'est une question d'hygiène numérique élémentaire.

Vérifier les fichiers générés

Une fois l'opération terminée, vous aurez deux fichiers. id_ed25519 est votre clé privée. C'est votre secret. Ne le donnez jamais à personne. Ne l'envoyez pas par mail. Ne le mettez pas sur un Slack. Le second, id_ed25519.pub, est votre clé publique. C'est celle-ci que vous allez copier sur vos serveurs ou sur GitLab. On peut voir la clé publique comme le cadenas, et la clé privée comme l'unique exemplaire de la clé physique qui l'ouvre.

Gérer ses identités sans s'arracher les cheveux

Générer la clé ne suffit pas. Il faut que Windows sache quand l'utiliser. C'est là qu'intervient l'agent SSH. C'est un service qui tourne en arrière-plan et qui garde vos clés "déverrouillées" en mémoire.

Activer le service OpenSSH Authentication Agent

Par défaut, ce service est souvent désactivé ou en mode manuel sur les installations standards. Il faut aller dans les services Windows (tapez services.msc dans votre barre de recherche). Cherchez "Agent d'authentification OpenSSH". Faites un clic droit, propriétés, et passez le type de démarrage en "Automatique". Démarrez-le. Sans ça, vous devrez pointer manuellement vers votre clé à chaque connexion. C'est insupportable.

Ajouter la clé à l'agent

Une fois le service actif, retournez dans PowerShell. Tapez ssh-add $HOME\.ssh\id_ed25519. Si vous avez mis une passphrase, le système vous la demandera. Maintenant, votre identité est chargée. Vous pouvez fermer votre terminal, lancer votre IDE préféré, et tout fonctionnera comme par magie. C'est la base d'une automatisation réussie.

Sécuriser l'accès à son serveur distant

Maintenant que vous avez vos fichiers, il faut les utiliser. La méthode brute consiste à copier le contenu de votre clé publique et à le coller dans le fichier .ssh/authorized_keys sur votre serveur Linux. C'est un peu artisanal.

Sur Windows, on n'a pas la commande ssh-copy-id par défaut comme sur Linux. C'est dommage. On peut toutefois le faire en une ligne de commande PowerShell un peu longue mais efficace. Sinon, une simple connexion manuelle suffit pour la première fois. Une fois la clé en place, éditez le fichier /etc/ssh/sshd_config sur le serveur pour désactiver l'authentification par mot de passe. C'est radical. Ça bloque net toutes les attaques par force brute qui inondent vos logs tous les jours. Un serveur qui n'accepte que les clés SSH est une forteresse bien plus sérieuse.

Les erreurs de permissions à éviter

Windows gère les droits d'accès différemment de Linux. Parfois, SSH refuse d'utiliser une clé parce que les permissions sont "trop ouvertes". En clair, il estime que n'importe quel utilisateur du PC peut lire votre clé privée. SSH est paranoïaque. Il faut s'assurer que seul votre compte utilisateur a des droits de lecture sur le dossier .ssh. Si vous voyez un message d'erreur du type "Permissions are too open", ne paniquez pas. Il suffit de modifier les paramètres de sécurité NTFS du fichier pour supprimer "Tout le monde" ou les autres utilisateurs de la liste des héritages.

Creating SSH Key on Windows pour les développeurs Web

Le cas d'usage le plus courant reste Git. Que vous utilisiez les services de la plateforme GitHub ou une instance privée, le principe reste identique. Vous allez dans vos paramètres de profil, section SSH, et vous collez le contenu de votre fichier .pub.

Certains développeurs préfèrent utiliser le protocole HTTPS parce que c'est plus simple au début. C'est un piège. HTTPS vous demande de gérer des jetons d'accès (Personal Access Tokens) qui expirent régulièrement. SSH ne vous demande rien une fois configuré. C'est un investissement en temps de cinq minutes qui vous sauve des heures de frustration sur une année entière.

Utilisation avec WSL2

Si vous travaillez avec le Windows Subsystem for Linux, les choses se corsent légèrement. WSL est un système Linux complet qui tourne à côté de Windows. Il a son propre dossier .ssh. Vous avez deux options. Soit vous recréez une clé à l'intérieur de WSL. Soit, et c'est ce que je recommande, vous faites un lien symbolique ou vous copiez vos clés Windows vers WSL. Attention, les droits de fichiers Linux sont très stricts. Un chmod 600 ~/.ssh/id_ed25519 est impératif pour que Linux accepte de s'en servir.

Intégration dans Visual Studio Code

VS Code possède une extension nommée "Remote - SSH". C'est un outil phénoménal. Elle utilise les clés présentes sur votre Windows pour ouvrir un tunnel vers votre serveur et vous permet d'éditer les fichiers directement là-bas, comme s'ils étaient en local. Si votre agent SSH est bien configuré, vous n'avez même pas à réfléchir. Vous cliquez, vous travaillez. C'est cette fluidité qui rend le développement agréable.

Maintenance et bonnes pratiques sur le long terme

Une clé SSH n'est pas éternelle. Enfin, techniquement, si, mais vos pratiques de sécurité ne devraient pas l'être. On recommande de renouveler ses clés tous les ans ou tous les deux ans. C'est une bonne occasion de faire le ménage dans les accès que vous avez accordés à d'anciens clients ou à des projets oubliés.

Rotation des clés

Le processus de rotation est simple. Vous générez une nouvelle paire de clés. Vous ajoutez la nouvelle clé publique partout où l'ancienne était présente. Vous testez que tout fonctionne. Ensuite, vous supprimez l'ancienne. Ne faites jamais l'inverse. Si vous supprimez l'accès avant d'avoir validé la nouvelle clé, vous risquez de vous enfermer dehors, surtout sur des serveurs distants sans interface de secours.

Sauvegarde sécurisée

Qu'arrive-t-il si votre PC rend l'âme ? Si vous perdez votre clé privée, vous perdez vos accès. C'est aussi simple que ça. Je ne vous conseille pas de mettre votre clé privée sur un cloud grand public non chiffré. Utilisez plutôt un gestionnaire de mots de passe comme Bitwarden qui permet de stocker des fichiers joints de manière sécurisée. Stocker une copie de sa clé privée dans un coffre-fort numérique chiffré est une stratégie de secours intelligente.

Diagnostiquer les problèmes de connexion

Parfois, ça ne marche pas. Vous avez suivi le tuto, mais le serveur rejette votre connexion. Le premier réflexe à avoir est de lancer la commande avec le mode verbeux : ssh -v utilisateur@serveur.

Le terminal va vous cracher des dizaines de lignes de log. Ne prenez pas peur. Regardez vers la fin. Vous verrez quelles clés SSH Windows essaie de proposer au serveur. Si vous voyez "Next authentication method: password", cela signifie que le serveur n'a pas reconnu votre clé ou que votre client ne lui a pas proposée. Souvent, c'est un problème de nom de fichier ou d'agent SSH qui n'est pas lancé. Vérifiez aussi que le serveur accepte bien l'algorithme Ed25519. Les très vieux serveurs sous Debian 8 ou des vieilles versions de CentOS peuvent nécessiter une mise à jour d'OpenSSH pour comprendre ces nouvelles courbes.

Le problème du format de fin de ligne

C'est rare avec les outils modernes, mais Windows utilise CRLF pour les fins de ligne alors que Linux utilise LF. Si vous copiez-collez votre clé publique et qu'un caractère invisible se glisse dedans, le serveur ne la reconnaîtra pas. Utilisez toujours le bloc-notes simple ou un éditeur comme Notepad++ pour vérifier qu'il n'y a qu'une seule et unique ligne dans votre fichier de clé publique.

Les alternatives pour les environnements complexes

Dans certains environnements d'entreprise, les politiques de sécurité interdisent l'usage direct de SSH. On utilise alors des bastions ou des proxys. Windows gère cela très bien via le fichier config situé dans votre dossier .ssh. Ce fichier est votre meilleur ami. Il vous permet de créer des alias.

Au lieu de taper ssh utilisateur@192.168.1.45 -p 2222, vous pouvez configurer un alias pour taper simplement ssh mon-serveur. C'est plus propre, ça évite les erreurs de frappe et ça permet de spécifier quelle clé utiliser pour quel serveur si vous en avez plusieurs. C'est une étape de confort que je juge indispensable dès que vous gérez plus de deux machines.

Utiliser des clés matérielles

Pour les plus paranoïaques d'entre nous, il existe des clés physiques comme la YubiKey. Windows supporte désormais l'authentification SSH via des clés FIDO2. La clé privée ne quitte jamais l'objet physique. Même si votre ordinateur est infecté par un malware, l'attaquant ne peut pas voler votre identité SSH. C'est le sommet de la pyramide de sécurité actuelle pour le développement.

Étapes de configuration finale

Pour mettre tout cela en pratique sans plus attendre, voici le chemin critique. Suivez ces étapes dans l'ordre.

  1. Lancez le Terminal Windows.
  2. Générez votre paire de clés avec ssh-keygen -t ed25519.
  3. Validez le chemin par défaut en appuyant sur Entrée.
  4. Saisissez une passphrase solide. Notez-la quelque part.
  5. Activez le service Agent d'authentification OpenSSH dans les services Windows.
  6. Ajoutez votre clé à l'agent avec ssh-add.
  7. Affichez votre clé publique avec cat ~/.ssh/id_ed25519.pub.
  8. Copiez cette chaîne de caractères.
  9. Collez-la dans l'interface de votre hébergeur ou de votre dépôt de code.
  10. Testez la connexion avec ssh -T git@github.com si vous utilisez GitHub.

Le système devrait vous saluer par votre nom d'utilisateur. Si c'est le cas, bravo. Vous avez terminé. Vous n'aurez plus jamais à subir l'interruption pénible d'une demande de mot de passe au milieu de votre élan créatif. La gestion des clés est une compétence fondamentale qui, une fois maîtrisée, vous fait gagner une crédibilité immédiate auprès de vos pairs techniques. C'est propre, c'est pro, et c'est surtout beaucoup plus sûr. Ne traînez pas à sécuriser vos accès. Le web est rempli de robots qui ne demandent qu'à tester vos mots de passe trop simples. Avec une clé Ed25519, ils se casseront les dents sur votre porte d'entrée.

Pour approfondir la sécurité de vos serveurs une fois la clé installée, vous pouvez consulter les recommandations de l'ANSSI qui propose des guides sur le durcissement des systèmes d'exploitation. Un système bien configuré est un système qui dure. Prenez le temps de bien faire les choses dès le départ.

LM

Lucie Michel

Attaché à la qualité des sources, Lucie Michel produit des contenus contextualisés et fiables.