Comment installer OpenSSH Server sur Windows 11

Dans PowerShell en administrateur, lancez Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0, puis Start-Service sshd et Set-Service -Name sshd -StartupType Automatic. L'installation crée la règle de pare-feu OpenSSH-Server-In-TCP pour le port 22. Les clés des comptes administrateurs vont dans C:\ProgramData\ssh\administrators_authorized_keys, et non dans le dossier de l'utilisateur.

Mis à jour le .

Installation

Ouvrez PowerShell avec Exécuter en tant qu'administrateur. Vérifiez s'il est déjà présent :

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Si OpenSSH.Server~~~~0.0.1.0 affiche State : NotPresent, installez-le :

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

Le minimum requis par Microsoft est Windows 10 build 1809 ou Windows Server 2019, avec PowerShell 5.1.

Vous pouvez aussi passer par les Paramètres : cherchez Fonctionnalités facultatives dans Démarrer, choisissez Afficher les fonctionnalités, puis ajoutez OpenSSH Server. Ouvrez ensuite l'app Services, réglez OpenSSH SSH Server sur Automatique et démarrez-le.

Démarrer le service

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service sshd

Sans la deuxième ligne, le service ne redémarre pas après un redémarrage de la machine.

Vérifier la règle de pare-feu

L'installation doit créer et activer une règle pour le port 22. Voici la vérification de Microsoft, qui crée aussi la règle si elle manque :

if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
}

Testez depuis une autre machine Windows :

Test-NetConnection -ComputerName server -Port 22

Se connecter

ssh user@server

Pour un compte de domaine, la forme est ssh domain\user@server. Vous obtenez cmd.exe par défaut. Pour obtenir PowerShell à la place, lancez ceci sur le serveur :

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

La connexion par clé demande d'abord une paire de clés sur votre ordinateur. Voir comment générer une clé SSH sous Windows.

Clés : quel fichier est lu

C'est là que la plupart des installations échouent. Le fichier sshd_config par défaut sous Windows se termine par :

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Le fichier dépend donc du compte :

CompteFichier
Utilisateur standardC:\Users\user\.ssh\authorized_keys
Membre du groupe AdministrateursC:\ProgramData\ssh\administrators_authorized_keys

Une clé placée dans le dossier de l'utilisateur est ignorée pour un administrateur, et la connexion retombe sur la demande de mot de passe. Pour vérifier si le compte est administrateur :

Get-LocalGroupMember Administrators

Ajouter une clé pour un administrateur

Lancez ceci sur le serveur dans un PowerShell avec élévation, en remplaçant l'exemple par votre propre clé publique :

Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'
icacls.exe "$env:ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

La deuxième ligne est importante : le fichier ne doit avoir d'entrées de permissions que pour Administrators et SYSTEM. Sur un Windows non anglophone, le nom du groupe diffère : utilisez donc son SID : /grant "*S-1-5-32-544:F".

Ajouter une clé pour un utilisateur standard

Lancez ceci sur le serveur avec cet utilisateur :

New-Item -Force -ItemType Directory -Path $env:USERPROFILE\.ssh
Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'

N'utilisez pas > ni >> pour ces fichiers. Dans Windows PowerShell 5.1, ils écrivent en UTF-16, ce que le serveur n'attend pas. Pour copier une clé depuis un autre ordinateur, voir ssh-copy-id sur Windows.

Modifier les réglages et lire les journaux

Le fichier de configuration est C:\ProgramData\ssh\sshd_config. Redémarrez le service après toute modification :

Restart-Service sshd

Les journaux vont dans l'Observateur d'événements, sous Journaux des applications et des services, OpenSSH, Operational. Regardez-y d'abord quand une connexion échoue, puisque le client dit seulement Permission denied.

Notez que PermitRootLogin n'a aucun effet sous Windows. Pour empêcher les administrateurs de se connecter, utilisez DenyGroups administrators.

Questions

Puis-je me connecter avec un compte Microsoft Entra ID ?

Non. La documentation de Microsoft indique que l'authentification par clé fonctionne avec les comptes locaux et Active Directory, et que les comptes Entra ne sont pas pris en charge par OpenSSH sur Windows.

Est-ce pareil sur Windows Server 2025 ?

OpenSSH y est déjà installé. Il suffit de lancer Start-Service sshd et Set-Service -Name sshd -StartupType Automatic, ou d'utiliser le paramètre Remote SSH Access dans Server Manager.

Sources

Autres guides : SSH sur chaque système

Tous les guides