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 :
| Compte | Fichier |
|---|---|
| Utilisateur standard | C:\Users\user\.ssh\authorized_keys |
| Membre du groupe Administrateurs | C:\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
- Get started with OpenSSH Server for Windows, Microsoft Learn
- OpenSSH Server configuration for Windows, Microsoft Learn
- Key-based authentication in OpenSSH for Windows, Microsoft Learn
- sshd_config par défaut, fork OpenSSH de Microsoft
- Logging facilities, wiki Win32-OpenSSH