Installer et configurer OpenSSH Server sur Windows Server 2019

I. Présentation

Après avoir vu comment utiliser le client SSH natif de Windows 10, nous allons voir comment installer et configurer OpenSSH Server sur Windows Server 2019. La partie serveur d'OpenSSH est également disponible sur Windows 10. De cette façon, il sera possible de se connecter en SSH sur une machine Windows, de la même façon qu'on le fait sous Linux ?

Cette solution offre une alternative à la connexion distante à l'aide de PowerShell.

Tutoriel disponible au format vidéo :

II. Installer OpenSSH Server sur Windows

L'installation d'OpenSSH Server sur Windows 10 ou Windows Server 2019 peut s'effectuer de deux façons : à partir de PowerShell ou de l'interface graphique. Quoi qu'il en soit, OpenSSH Server correspond à une fonctionnalité facultative de Windows.

A partir d'une console PowerShell ouverte en tant qu'administrateur, la commande suivante permet l'installation :

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

Sinon, à partir de l'interface graphique suivez les étapes suivantes. Cliquez sur le menu Démarrer, sur Paramètres puis sur la section "Applications".

Sur la gauche, choisissez "Applications et fonctionnalités" et à droite cliquez sur "Fonctionnalités facultatives".

Cliquez sur le bouton "Ajouter une fonctionnalité".

Utilisez la barre de recherche pour saisir le mot clé "ssh" et trouver plus facilement la fonctionnalité "Serveur OpenSSH". Cochez la case associée et cliquez sur le bouton dans le bas de la fenêtre pour démarrer l'installation.

Patientez pendant l'installation... Elle ne prendra que quelques secondes.

L'installation d'OpenSSH Server ne nécessite pas de redémarrer votre machine. Maintenant, passons à la configuration et la connexion sur un hôte équipé d'OpenSSH Server.

III. Configurer OpenSSH Server sur Windows

A. Démarrage automatique du serveur OpenSSH

Pour commencer la configuration, nous allons démarrer le serveur OpenSSH d'une part, et d'autre part nous allons le configurer en démarrage automatique.

Plutôt que le faire à partir de la console "Services", je vous propose d'exécuter deux commandes PowerShell, ce sera plus efficace. Voici l'état actuel du service "OpenSSH SSH Server" :

Pour démarrer le service "sshd" correspondant à "OpenSSH SSH Server", on va utiliser la commande suivante :

Start-Service -Name "sshd"

Ensuite, pour le modifier et définir le mode de démarrage sur "Automatique" au lieu de "Manuel" :

Set-Service -Name "sshd" -StartupType Automatic

La commande ci-dessous vous permettra de vérifier qu'il est bien en cours d'exécution.

Get-Service -Name "sshd"

OpenSSH Server sur Windows

B. Configuration d'OpenSSH Server sur Windows

Sur Windows, la configuration d'OpenSSH est stockée à l'emplacement ci-dessous où l'on va trouver le fichier sshd_config :

%programdata%\ssh\

Au sein du fichier sshd_config, nous allons retrouver les options classiques d'OpenSSH. Nous pouvons le configurer de la même façon qu'on le ferai la configuration SSH sous Linux.

Attention tout de même : à ce jour, il y a des options non supportées comme les options X11. La liste complète des options non supportées est disponible sur le site Microsoft : OpenSSH - Options non supportées

  • Modifier le port d'écoute SSH

Pour modifier le port d'écoute par défaut (recommandé) et utiliser un autre port que le n°22, il faut modifier l'option "Port". Pour modifier le fichier de configuration, vous devez ouvrir l'éditeur de texte en tant qu'administrateur pour avoir le droit d'enregistrer le fichier.

Ensuite, il faut décommenter la ligne "#Port 22" et changer le numéro de port, comme ceci :

OpenSSH Server sur Windows - Configuration

Après chaque modification de la config, il est indispensable de redémarrer le service SSH pour charger les nouveaux paramètres. PowerShell permet de le faire facilement :

Restart-Service "sshd"

A la suite de la modification du port, si la connexion SSH ne fonctionne pas, regardez du côté du pare-feu Windows. En effet, lors de l'installation d'OpenSSH Server, une règle est créée pour autoriser les connexions sur le port 22.

Voici la commande pour créer une règle de pare-feu qui autorise les connexions entrantes sur le port 222 :

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd) - Port 222' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 222

Je vous invite à en profiter pour désactiver la règle créée par défaut puisqu'elle n'est plus utile :

  • L'option "PermitRootLogin"

Cette option est généralement configurée lorsque l'on est sous Linux pour empêcher l'utilisateur "root" de s'authentifier directement en SSH. C'est une restriction que l'on met en place pour des raisons évidentes de sécurité.

Concernant OpenSSH sous Windows, cette option ne fonctionne pas mais il y a une alternative. Il faut utiliser la directive DenyGroups pour refuser l'accès à certains groupes, notre cible sera le groupe "Administrateurs" pour empêcher les comptes admins locaux de se connecter en SSH.

Dans le fichier de configuration, il faut commenter les deux lignes suivantes, sinon la directive DenyGroups ne fonctionne pas :

# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

A la suite, ajoutez la ligne suivante :

DenyGroups administrateurs

Redémarrez le service SSH et tentez de vous connecter à votre serveur avec un compte administrateur : l'accès doit être refusé !

  • Les options DenyUsers, AllowUsers, DenyGroups et AllowGroups

Pour gérer les autorisations de connexion sur le serveur en SSH, les options DenyUsers, AllowUsers, DenyGroups et AllowGroups seront nécessaires. Les règles s'appliquent dans l'ordre cité précédemment.

Par exemple, la combinaison suivante ne peut pas fonctionner : l'accès est refusé à tous les utilisateurs.

AllowGroups utilisateurs
DenyGroups *

Si l'on précise seulement :

AllowGroups administrateurs

Il n'y a que les membres du groupe "Administrateurs" qui sont autorisés à se connecter. Il est à noter que les valeurs doivent être inscrites en minuscules.

Pour autoriser les membres d'un groupe de sécurité d'un domaine Active Directory, la syntaxe est la suivante :

AllowGroups <nom-netbios-domaine>\<nom-groupe>
AllowGroups itconnect\informatique

A l'inverse, si l'on veut empêcher tous les utilisateurs du domaine "itconnect" à se connecter :

DenyUsers itconnect\*

On peut également effectuer des restrictions par rapport à un hôte. Si l'on veut autoriser seulement les connexions avec le compte "florian" depuis l'adresse IP "192.168.1.150", on précisera :

AllowUsers [email protected]

Si vous souhaitez vous connecter et que vous obtenez le message "Access denied", c'est que l'utilisateur est incorrect ou que le mot de passe est incorrect, ou alors que vos règles de gestion des permissions vous bloque.

  • L'option "ChrootDirectory"

Pour cloisonner un utilisateur dans un dossier lorsqu'il se connecte, on va s'appuyer sur la directive "ChrootDirectory". Toujours dans le même fichier de configuration, on va utiliser cette ligne pour chrooter dans le dossier "C:/scripts" :

ChrootDirectory C:/scripts

Attention, il est à noter que le chroot s'applique uniquement sur les sessions SFTP, avec WinSCP par exemple, ou les sessions SCP. Si vous lancez une connexion classique avec PuTTY ou le client SSH de Windows, vous serez libre de naviguer sur le système...

Il faut ajouter une seconde directive pour empêcher l'accès SSH classique et forcer l'utilisation du SFTP : ForceCommand avec la valeur "internal-sftp". Si vous souhaitez faire du transfert de fichiers et utiliser le ChrootDirectory, c'est l'idéal, mais ça bloque l'accès en ligne de commande. Ce qui donnera :

ChrootDirectory C:/scripts
ForceCommand internal-sftp

Les options peuvent s'appliquer de façon dynamique en fonction des utilisateurs ou des groupes. Par exemple, si on veut appliquer cette restriction et le chroot "C:/scripts" uniquement à l'utilisateur "florian", cela donnera :

Match User florian
     ChrootDirectory C:/scripts
     ForceCommand internal-sftp

On s'appuiera sur "match group" pour cibler un groupe plutôt qu'un utilisateur. Grâce à cette possibilité, on peut chrooter, isoler, les utilisateurs dans des dossiers différents. La variable %username% ne fonctionne pas dans sshd_config.

IV. Utiliser le client OpenSSH sur Windows

Pour rappel, voici la vidéo qui sert à installer et utiliser le client OpenSSH sous Windows 10.

Pour établir une connexion SSH avec ce client, c'est très simple :

ssh <utilisateur>@<hote>
ssh [email protected]

Si vous souhaitez utiliser PuTTY ou une autre application, c'est possible bien sûr ! ?

Lorsque la connexion SSH est établie, on peut bien sûr exécuter des commandes PowerShell. Cela nécessite d'exécuter la commande "powershell.exe" pour lancer le shell et après c'est parti !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3279 posts and counting.See all posts by florian

One thought on “Installer et configurer OpenSSH Server sur Windows Server 2019

  • Super tuto, simple et efficace !
    D’ailleurs, merci beaucoup pour tous le travail fournit sur it-connect.fr, je me suis construit de bonnes bases en administration des systèmes ! Merci !

    Petite question concernant la gestion des autorisations, si je souhaite autoriser uniquement l’utilisateur florian, j’ajoute la ligne :
    Allowusers florian

    Mais pas besoin de Denyusers les autres utilisateurs (ou groups) ? Non ?

    Répondre

Répondre à Wiwi Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.