Kévin Subileau

Espace personnel

win10-client-serveur-ssh-natif

Windows 10 - Activer et utiliser le client/serveur SSH natif

Il aura fallu être très patient, mais ça y est, Microsoft a enfin intégré un support natif de SSH sur Windows ! Depuis la mise à jour de septembre 2017 de Windows 10 (Fall Creators Update), il est en effet possible d'installer un client et un serveur OpenSSH natif. Plus besoin de Putty, Cygwin ou autres verrues diverses et variées, ni même de passer par le sous-système Windows pour Linux introduit en 2016. C'est bel et bien du 100% natif Windows !

Une nouveauté qui contribuera à améliorer l'interopérabilité entre Windows et Linux, en permettant de se connecter à un serveur Linux depuis Windows et inversement, et qui pourrait simplifier l'usage de certains outils de gestion de configuration comme Ansible.

Mais pour le moment, cela reste toutefois une implémentation en bêta et Microsoft déconseille de l'utiliser sur un environnement de production critique.

Installation du client et/ou du serveur SSH

Ce support de SSH est fourni en tant que fonctionnalité facultative. Il faut donc passer par une rapide installation pour pouvoir en bénéficier.

Avant toute chose, vérifiez bien que vous possédez la dernière version de Windows 10 en date (1709 minimum), et que toutes les mises à jour disponibles sont installées.

Ensuite, rendez-vous dans les Paramètres Windows via le bouton « roue dentée » du menu Démarrer ou le raccourci clavier Win+I, puis cliquez sur Applications. A l'écran suivant, cliquez ensuite sur Gérer les fonctionnalités facultatives, puis sur le bouton Ajouter une fonctionnalité.
win10-ssh-applis-fonctionnalites

Dans la liste des fonctionnalités optionnelles disponibles, cliquez sur OpenSSH Client puis sur Installer. Si vous souhaitez également pouvoir vous connecter à distance par SSH à votre poste, vous pouvez installer le serveur SSH en sélectionnant OpenSSH Server.
win10-ssh-install

Patientez quelques instants le temps de l'installation puis redémarrez le poste.

Utilisation du client SSH

win10-ssh-command

La commande SSH est disponible immédiatement après redémarrage !

Après redémarrage, vous pouvez ouvrir une invite de commandes et utiliser tout simplement la commande SSH comme vous le feriez sur Linux !

Notez que les commandes suivantes sont également disponibles :

  • scp
  • sftp
  • ssh-add
  • ssh-agent
  • ssh-keygen

Vous pouvez donc effectuer des transferts de fichiers avec scp ou sftp, ou générer des clés SSH avec ssh-keygen.

Tous ces outils sont installés dans le dossier C:\Windows\System32\OpenSSH, qui a automatiquement été ajouté à la variable d'environnement PATH pour pouvoir les utiliser sans avoir à indiquer le chemin complet. Vous n'avez donc rien de plus à faire pour la partie cliente !

Configuration du serveur

Même si le serveur OpenSSH fonctionne comme un service Windows standard, que vous pourrez retrouver dans la console des Services sous le nom sshd, sa mise en place est en revanche un peu plus délicate…

En effet, même après redémarrage, le service sshd ne sera pas en fonctionnement et si vous tenter de le démarrer juste après l'installation, vous obtiendrez sans doute ce message d'erreur :

Windows n'a pas pu démarrer le service sshd sur Ordinateur local.
Erreur 1067: Le processus s'est arrêté inopinément.
win10-ssh-erreur-1067

Le serveur SSH requiert quelques actions complémentaires pour pouvoir démarrer...

Pour comprendre ce qu'il se passe, vous pouvez alors consulter le contenu du fichier C:\Windows\System32\OpenSSH\Logs\sshd.log. Vous y trouverez très certainement une ligne indiquant que le serveur n'a pas réussi à trouver le fichier correspondant à la clé de l'hôte.

5272 11:06:28:910 error: Could not load host key: ./ssh_host_rsa_key
5272 11:06:28:910 error: Could not load host key: ./ssh_host_dsa_key
5272 11:06:28:910 error: Could not load host key: ./ssh_host_ed25519_key
5272 11:06:28:910 sshd: no hostkeys available -- exiting.

Avant de pouvoir démarrer le serveur, il faut en effet générer manuellement la clé de l'hôte qui servira à chiffrer la communication entre le serveur et le client. Pour cela, ouvrez une invite de commande en tant qu'Administrateur et tapez les commandes suivantes :

cd C:\Windows\System32\OpenSSH
ssh-keygen.exe -A

Cela va générer une paire de clés nommées ssh_host_ed25519_key (clé privé) et ssh_host_ed25519_key.pub (clé publique) dans le dossier C:\Windows\System32\OpenSSH.

Une fois ces commandes exécutées, vous pouvez fermer l'invite de commande. Toutefois ce n'est toujours pas suffisant pour que le serveur SSH démarre. Si vous essayer tout de même, vous retomberez sur le même message que précédemment.

Il reste en effet une dernière étape à réaliser : modifier les permissions sur les fichiers générés précédemment. En effet, le compte NT Service\sshd utilisé pour le fonctionnement du service SSH n'a pas accès à ces fichiers. Pour corriger cela, ouvrez les propriétés du fichier ssh_host_ed25519_key et, dans l'onglet Sécurité, effectuez les opérations suivantes :

  • Changer le propriétaire du fichier pour NT Service\sshd.
  • Donnez seulement la permission de lecture au compte NT Service\sshd.
  • Retirer toutes les autres permissions y compris pour les éventuels autres utilisateurs.

Une fois cela fait, vous devriez obtenir les permissions suivantes pour le fichier ssh_host_ed25519_key:

win10-ssh-permissions

Les permissions doivent correspondre exactement à cette image !

Si les permissions ne sont pas définies correctement, le service refusera de démarrer et un message WARNING: UNPROTECTED PRIVATE KEY FILE sera écrit dans le fichier journal.

Une fois que tout est correct, vous pouvez relancer le serveur SSH en démarrant le service sshd. Cette fois, tout devrait bien se passer.

win10-ssh-service

Le serveur SSH est enfin en marche !

Il vous reste encore à définir un mot de passe pour votre compte utilisateur si toutefois vous n'en aviez pas, ainsi qu'à ouvrir le port 22 sur le pare-feu Windows du serveur. Vous pouvez pour cela utiliser la commande suivante :

netsh advfirewall firewall add rule name="Service SSH" dir=in action=allow protocol=TCP localport=22

A partir de là vous pouvez vous connecter en SSH à votre serveur depuis un poste distant. Vous obtiendrez une invite de commande complète depuis laquelle vous pourrez lancer toutes les commandes habituellement disponibles en local, y compris Powershell.

win10-ssh-connexion-Xubuntu

Connexion SSH à un serveur Windows depuis un client Xubuntu.

Vous pourrez également vous connecter à distance au système de fichiers via SFTP en utilisant un client comme WinSCP, ce qui vous permettra de parcourir l'arborescence du serveur et de transférer des fichiers d'une machine à une autre.

win10-ssh-connexion-sftp

Connexion au système de fichiers d'un serveur Windows par SFTP.

A savoir, cette première implémentation souffre encore de quelques limitations. En particulier, elle ne supporte que les clés de type ED25519, ce qui peut causer des soucis de compatibilité avec certains clients et serveurs plus anciens qui ne gèrent pas encore ce type de clés. Aussi, je pense que l'installation de la partie serveur gagnerai à être mieux automatisée pour plus de simplicité. Mais cela reste une bêta et gageons que cela s'améliore rapidement lors de prochaines mises à jour...

25 Commentaires

Dernier commentaire il y a 17/10/2020

Envoyer une réponse à Chevalier Pierre Annuler la réponse.

ou

Champs Requis *.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>