Comment configurer l’authentification par clé publique SSH sous Windows

Configurer l’authentification par clé SSH sous Windows peut paraître complexe, surtout si vous n’en avez jamais configuré. Pourtant, une fois les commandes et les fichiers de configuration maîtrisés, c’est une méthode très pratique pour se connecter sans avoir à saisir constamment son mot de passe. De plus, elle est plus sécurisée si elle est correctement configurée. Ce guide vous accompagne pas à pas dans la génération de clés RSA ou EdDSA, la copie de la clé publique sur votre serveur, la configuration et la sécurisation du système. Progressivement, vous pourrez vous connecter en SSH à votre machine Windows ou à d’autres serveurs sans difficulté, et sans avoir à saisir votre mot de passe à chaque fois.

Comment résoudre les problèmes d’authentification SSH sous Windows avec des clés

Générer une paire de clés SSH sous Windows

Avant toute chose, il vous faut une paire de clés privée/publique. C’est le principe de base du SSH par clés. Sous Windows 10/11 ou Windows Server 2019/2022, le plus simple est d’installer le client OpenSSH s’il n’est pas déjà installé. Vous pouvez l’ajouter via PowerShell :

Add-WindowsCapability -Online -Name OpenSSH. Client~~~~0.0.1.0

Si vous utilisez une version plus ancienne de Windows, vous devrez peut-être télécharger Win32-OpenSSH depuis GitHub, mais sur les versions plus récentes, il est techniquement intégré.

Une fois installé, ouvrez simplement une fenêtre PowerShell (aucun droit d’administrateur n’est requis, sauf pour les opérations système) et générez votre clé. Je trouve qu’il est préférable d’utiliser ED25519 actuellement, car c’est plus rapide et plus sûr : il suffit d’exécuter la commande suivante :

ssh-keygen -t ed25519

Il vous sera demandé où enregistrer la clé ; par défaut, c’est le C:\Users\YourUser\.ssh\id_ed25519répertoire courant. Appuyez sur Entrée pour accepter ou spécifiez un autre emplacement. Ensuite, il vous sera demandé une phrase secrète. Honnêtement, je passe généralement cette étape pour éviter de la saisir à chaque fois, mais cela représente un risque de sécurité si quelqu’un a accès à votre clé privée. N’oubliez pas que si vous ne définissez pas de phrase secrète, quelqu’un qui trouve votre clé pourra également se connecter.

Il crée deux fichiers dans .ssh : – id_ed25519(votre clé privée, conservez-la précieusement !) – id_ed25519.pub(votre clé publique, que vous envoyez à votre serveur)

Ensuite, pour vous simplifier la vie, ajoutez votre clé privée à l’agent SSH comme ceci :

set-service ssh-agent -StartupType Automatic Start-Service ssh-agent ssh-add "$env:UserProfile\.ssh\id_ed25519"

Sur certaines machines, cela ne fonctionne pas parfaitement du premier coup ; redémarrez donc votre ordinateur ou démarrez le service manuellement si nécessaire. Ainsi, vos clés privées seront chargées et prêtes à l’emploi avant même que vous ne vous connectiez.

Configuration du serveur — Transfert de la clé publique vers la fenêtre distante

Ensuite, vous devez vous connecter id_ed25519.pubà la machine Windows à laquelle vous souhaitez accéder. Si vous vous connectez à un autre serveur Windows via OpenSSH, copiez cette clé publique dans C:\Users\ nom_utilisateur \.ssh\authorized_keys. Vous pouvez le faire via SCP, ou simplement copier-coller si vous préférez.

scp C:\Users\youruser\.ssh\id_ed25519.pub user@remote-win:/c/Users/user/.ssh/authorized_keys

Vérifiez que le dossier .ssh et le fichier authorized_keys disposent des permissions appropriées. Personne ne souhaite que d’autres utilisateurs puissent lire ces fichiers, et surtout pas les administrateurs qui ne devraient pas y avoir accès. Il est donc important de définir explicitement les permissions.

icacls "C:\Users\username\.ssh\authorized_keys" /inheritance:r /grant username:F

Vous pouvez aussi utiliser PowerShell Set-Aclsi vous préférez les scripts. Vérifiez également la configuration de votre serveur SSH : ouvrez-la C:\ProgramData\ssh\sshd_configdans le Bloc-notes et assurez-vous PubkeyAuthentication yesqu’elle n’est pas commentée. Si ce n’est pas le cas, supprimez simplement le # au début. Il vous faudra peut-être aussi désactiver une option StrictModesen la remplaçant #StrictModes yespar StrictModes no. Windows, c’est toujours un paramètre à modifier.

Tester votre connexion SSH — Aucun mot de passe requis

Maintenant, lorsque vous essayez de vous connecter à l’aide de la commande :

ssh [email protected]

Si vos clés sont correctement configurées, vous devriez pouvoir vous connecter sans avoir à saisir de mot de passe, à condition que votre clé privée ne soit pas protégée par une phrase secrète ou que vous l’ayez ajoutée à l’agent. Lors de la première connexion, SSH vous demandera si vous faites confiance à l’hôte ; répondez simplement « oui », et cette empreinte sera utilisée par la suite. En cas de refus d’accès, vérifiez que votre clé publique figure bien dans le répertoire `authorized_keys` et que les permissions sont correctes. Il est parfois nécessaire de redémarrer le service SSH après une modification de la configuration ou une copie des clés.

Astuce bonus : vous pouvez également spécifier la clé explicitement :

ssh [email protected] -i C:\Users\youruser\.ssh\id_ed25519

C’est pratique si vous jonglez avec plusieurs clés ou si vous ne voulez pas avoir à manipuler l’agent.

Connexion en tant qu’administrateur — Astuces spéciales

Les comptes d’administrateur nécessitent quelques précautions supplémentaires. Windows utilise le fichier administrators_authorized_keys situé dans C:\ProgramData\ssh. Vous devez y ajouter votre clé publique et vous assurer que les permissions sont strictement limitées : seuls les administrateurs et le compte SYSTEM doivent y avoir accès. Utilisez les commandes icaclsPowerShell pour sécuriser ce fichier.Get-AclSet-Acl

Si vous souhaitez désactiver complètement la connexion par mot de passe, configurez PasswordAuthentication nole sshd_configservice SSH et redémarrez-le Restart-Service sshd. Procédez avec précaution : vous ne voulez pas vous retrouver complètement bloqué !

Enfin, les journaux

Vous trouverez les journaux SSH dans l’Observateur d’événements, sous Journaux des applications et des services > OpenSSH > Opérationnel. Si tout fonctionne correctement, vous verrez des événements comme sshd: Accepted publickey for usernamecelui-ci : c’est toujours bon signe. Dans le cas contraire, ces journaux vous indiqueront la cause du problème : problèmes d’autorisations, erreurs de configuration ou problèmes de clés.

En résumé, la configuration demande un peu de patience, mais le gain en sécurité et en praticité en vaut la peine. Il suffit de suivre les étapes, de vérifier les autorisations et de protéger vos clés privées. C’est assez satisfaisant une fois que tout fonctionne correctement.

Résumé

  • Générer des clés SSH avecssh-keygen
  • Copiez la clé publique sur la machine Windows distante.
  • Assurez-vous sshd_configque l’authentification par clé publique est autorisée.
  • Ajoutez votre clé au fichier authorized_keys avec les permissions appropriées.
  • Utilisez- sshle avec ou sans l’ -iindicateur pour vous connecter.

Conclure

L’ensemble du processus peut s’avérer un peu délicat, notamment en ce qui concerne les permissions et les fichiers de configuration, mais une fois configuré, c’est une méthode d’authentification sécurisée bien plus simple. Il s’agit d’une configuration unique et définitive qui sera vite rentabilisée lors de votre prochaine connexion. J’espère que cela aidera tous ceux qui rencontrent des difficultés pour faire fonctionner SSH sous Windows sans mot de passe. Bonne chance, et j’espère que cela vous fera gagner du temps par la suite.