# Windows 🪟

### Installation

Depuis quelques versions de Windows, il est dorénavant possible d'installer un serveur SSH et accéder à la ligne de commande avec ceci plutôt que par PowerShell Remoting. Cette fonctionnalité peut être installée/activée dans les fonctionnalités avancées/facultative mais peut aussi être simplement activée par PowerShell avec les commandes suivantes exécutées en administrateur.

```powershell
# Trouver la version à installer
Get-WindowsCapability -Online | Where-Object Name -like "OpenSSH.Server*"
#
# Installation du serveur
Add-WindowsCapability -Online -Name OpenSSH.server~~~~0.0.1.0
# Un redémarrage sera nécessaire ici
#
# Activation du service
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service -Name sshd
```

### Configuration

Tout comme sous Linux, sa configuration peut être trouvée dans un fichier sshd\_config situé dans C:\\ProgramData\\ssh\\. La structure et les options du fichier sont sensiblement les mêmes que pour la configuration du serveur SSH sous Linux à quelques exceptions près telles que X11Forwarding puisque ces paramètres ne s'appliquent pas à Windows.

Il faudra par contre ajouter une règle au pare-feu pour permettre les connexions entrantes au port configuré pour SSH avec la commande suivante puisque le pare-feu Windows est activé par défaut et bloque les communications entrantes à la plupart des ports.

```powershell
# Ajout d'une règle de pare-feu permettant les connexions entrantes au port SSH
New-NetFirewallRule -DisplayName "SSH Entrant" -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow
```

Il est aussi nécessaire d'ajouter les utilisateurs ayant l'autorisation de se connecter en SSH au groupe correspondant. Ces commandes ajouteraient "Bob" aux utilisateurs ayant la permission de se connecter à la machine par SSH

```powershell
PS C:\WINDOWS\system32> Get-LocalGroup | Where-Object Name -like *SSH*

Name                 Description
----                 -----------
Utilisateurs OpenSSH Les membres de ce groupe peuvent se connecter à cet ordinateur à l’aide de SSH.


PS C:\WINDOWS\system32> Get-LocalGroupMember -Group "Utilisateurs OpenSSH"
PS C:\WINDOWS\system32> Add-LocalGroupMember -Group "Utilisateurs OpenSSH" -Member "bob"
PS C:\WINDOWS\system32> Get-LocalGroupMember -Group "Utilisateurs OpenSSH"

ObjectClass Name                PrincipalSource
----------- ----                ---------------
Utilisateur DESKTOP-D67ERFV\Bob Local
```