OpenSSH sur Windows Server s'active depuis une console PowerShell avec privilèges élevés. Add-WindowsCapability installe OpenSSH.Server, Start-Service sshd démarre le service et Set-Service le passe en démarrage automatique. Un détail compte pour la connexion par clé depuis un téléphone : les comptes administrateurs lisent C:\ProgramData\ssh\administrators_authorized_keys, et non le fichier authorized_keys de leur profil. Le port par défaut est TCP 22.

Installer OpenSSH.Server sur Windows Server avec Add-WindowsCapability

Le serveur OpenSSH de Windows est fourni sous forme de fonctionnalité système facultative. Deux cmdlets, exécutées depuis une console PowerShell administrateur, permettent de vérifier son état et de l'installer :

# Check client and server state
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Install the server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

La première commande indique State : Installed ou State : NotPresent pour OpenSSH.Client et OpenSSH.Server. Si le serveur apparaît déjà comme installé, passez à l'étape suivante. L'installation crée le service sshd et le dossier C:\ProgramData\ssh. Ce dossier contient les clés d'hôte et sshd_config.

Démarrer le service sshd de Windows et ouvrir le port 22

Après l'installation, sshd existe mais il est arrêté et configuré en démarrage manuel. Ces commandes le démarrent, le passent en automatique et vérifient le pare-feu :

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

# Check for an inbound SSH rule
Get-NetFirewallRule -Name *ssh*

# If missing, create one for TCP 22
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

C:\ProgramData\ssh\sshd_config accepte les mêmes directives que sous Unix, comme PasswordAuthentication, Port ou AllowGroups. La référence complète se trouve dans la page de manuel de sshd_config. Lancez Restart-Service sshd après chaque modification. Si le serveur n'a pas d'IP publique, ou si vous préférez ne pas exposer le port 22, un réseau maillé privé sans ports ouverts comme Prialo, ou Tailscale, permet de l'atteindre sans toucher au routeur.

administrators_authorized_keys : pourquoi votre clé SSH échoue sur Windows Server

Pour les membres du groupe local des administrateurs, sshd ignore %USERPROFILE%\.ssh\authorized_keys. Le sshd_config par défaut se termine par ce bloc :

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

La clé publique du téléphone doit donc aller dans ce fichier partagé. Ce fichier doit en outre n'être accessible qu'aux Administrateurs et à SYSTEM ; s'il hérite de permissions pour d'autres utilisateurs, sshd le refuse. C'est l'équivalent en ACL du 700 sur ~/.ssh et du 600 sur authorized_keys sous Linux. Utiliser les SID évite les problèmes liés aux noms de groupes localisés :

$key = 'ssh-ed25519 AAAA...your-key... phone'
Add-Content -Path 'C:\ProgramData\ssh\administrators_authorized_keys' -Value $key

# Remove inheritance, keep only Administrators (S-1-5-32-544) and SYSTEM (S-1-5-18)
icacls.exe 'C:\ProgramData\ssh\administrators_authorized_keys' /inheritance:r /grant '*S-1-5-32-544:F' /grant '*S-1-5-18:F'

Utilisez une clé Ed25519, prise en charge par OpenSSH depuis la version 6.5. À partir d'OpenSSH 8.8, la signature SHA-1 ssh-rsa est désactivée par défaut, si bien que les anciennes clés RSA provoquent des échecs déroutants. Dans termi1, la clé est générée sur le téléphone lui-même et stockée dans le trousseau sécurisé du système. Vous ne copiez que la partie publique ; la clé privée ne quitte jamais l'appareil.

PowerShell comme shell sshd par défaut sur Windows Server

Sans configuration supplémentaire, une session SSH sous Windows ouvre cmd.exe. La valeur de registre DefaultShell sous HKLM:\SOFTWARE\OpenSSH permet de changer cela :

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

Si PowerShell 7 est installé, faites plutôt pointer la valeur vers C:\Program Files\PowerShell\7\pwsh.exe. Avec PowerShell comme shell de connexion, vous pouvez lancer Get-Service, Get-EventLog ou Restart-Service depuis votre téléphone sans avoir à taper powershell au préalable.

Se connecter en SSH à Windows Server depuis un téléphone ou un ordinateur

Les paramètres de connexion sont les mêmes dans n'importe quel client : utilisateur, IP ou nom d'hôte du serveur, port 22 et clé Ed25519. Ce qui change, c'est l'environnement de travail :

Élément comparéTéléphone (iOS/Android)Ordinateur
Touches dont PowerShell a besoinClavier termi1 avec Tab, Ctrl, Échap et flèchesClavier physique complet
Emplacement de la cléTrousseau sécurisé du système ; la clé privée reste sur le téléphoneFichier dans ~/.ssh avec permissions 600
Transfert de fichiersSFTP intégré sans quitter la sessionsftp ou scp (SFTP par défaut depuis OpenSSH 9.0)
Changement de réseauReconnexion en SSH ; Windows n'a pas mosh-serverReconnexion en SSH
Pas d'IP publiquePrialo ou Tailscale sur le téléphonePrialo ou Tailscale sur l'ordinateur

PowerShell s'appuie beaucoup sur Tab pour compléter les cmdlets et les paramètres, si bien que le clavier du terminal SSH termi1 économise beaucoup de frappe. Son IA transforme une phrase comme « redémarre le spouleur d'impression » en commande et la tape à l'invite sans appuyer sur Entrée. Sur un serveur marqué comme production, Production Guard bloque tout Stop-Service ou toute suppression avant qu'ils n'atteignent l'invite.

4 erreurs en activant OpenSSH sur Windows Server

  1. Placer la clé dans le profil de l'administrateur. Pour le groupe des administrateurs, c'est administrators_authorized_keys qui prévaut.
  2. Laisser l'héritage des permissions activé. Si d'autres utilisateurs peuvent accéder au fichier, sshd l'ignore sans prévenir.
  3. Oublier le démarrage automatique. Sans Set-Service -StartupType 'Automatic', SSH cesse de fonctionner après un redémarrage.
  4. S'attendre à Mosh ou tmux. Ce sont deux outils côté Unix ; une session Windows est du SSH simple.

Questions fréquentes

Comment installer OpenSSH Server sur Windows Server ?

OpenSSH Server s'installe sur Windows Server depuis un PowerShell avec privilèges élevés grâce à Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0. Démarrez ensuite le service avec Start-Service sshd, passez-le en automatique avec Set-Service et vérifiez qu'une règle de pare-feu autorise le TCP 22 entrant.

Où placer la clé publique d'un administrateur dans OpenSSH pour Windows ?

La clé publique d'un administrateur dans OpenSSH pour Windows va dans C:\ProgramData\ssh\administrators_authorized_keys, et non dans le profil utilisateur. Seuls les Administrateurs et SYSTEM doivent avoir accès au fichier. Configurez cela avec icacls et supprimez l'héritage ; s'il reste d'autres permissions, sshd rejette la clé.

Puis-je utiliser Mosh pour me connecter à un Windows Server ?

Mosh nécessite que mosh-server tourne sur la machine distante, lancé via une première connexion SSH. OpenSSH pour Windows ne l'inclut pas. Depuis un téléphone, une session Windows Server est donc du SSH standard : passer du wifi aux données mobiles implique de se reconnecter.

Comment définir PowerShell comme shell SSH sous Windows ?

PowerShell devient le shell SSH sous Windows lorsque vous créez la valeur DefaultShell sous HKLM:\SOFTWARE\OpenSSH pointant vers powershell.exe ou pwsh.exe. Créez la valeur avec New-ItemProperty, puis redémarrez le service avec Restart-Service sshd pour que les nouvelles sessions la prennent en compte.