Sur Windows Server 2016, OpenSSH n’est pas maintenu via Windows Update ; il faut donc gérer soi‑même les binaires et la configuration. Cet article détaille comment viser OpenSSH 9.8 : état du support, méthodes d’installation, compilation, bonnes pratiques et plan de repli.
Pourquoi viser OpenSSH 9.8 ?
La branche 9.8 apporte notamment :
- correctifs de sécurité CVE‑2024‑6409 et CVE‑2024‑6542 ;
- prise en charge étendue des clés sk‑ecdsa‑sha2‑nistp256@openssh.com (FIDO2) ;
- optimisations du transport (latence réduite sur WAN) ;
- nettoyage des dépendances OpenSSL 3 et zlib 1.3.
État actuel du support sur Windows Server 2016
À la date d’août 2025 :
- la dernière version stable signée fournie par l’équipe Win32‑OpenSSH pour Server 2016 reste 9.5.0.0 (Beta) ;
- aucun installeur MSI ou package « Optional Feature » ne distribue la 9.8 ;
- des pré‑releases non stables circulent, mais leur usage en production n’est pas recommandé.
Vérifier la version actuellement installée
PS C:\> ssh -V
OpenSSH_for_Windows_9.2p1, LibreSSL 3.7.3
Notez également la librairie crypto liée : Libressl ou OpenSSL.
Tableau récapitulatif
Point clé | Détails utiles |
---|---|
Disponibilité des binaires 9.8 | À ce jour, aucun package Win32‑OpenSSH officiel n’est publié pour Windows Server 2016 au‑delà de la branche 9.5 (Beta). Impossible donc de « pousser » 9.8 sans compilation ou build tiers. |
Dernière version stable accessible | La page Releases du dépôt PowerShell/Win32‑OpenSSH expose des archives ZIP 64 bits (ex. OpenSSH‑Win64.zip ) en 9.5.0.0 p1‑Beta. |
Procédure d’installation / mise à niveau (vers 9.5) | Télécharger l’archive ZIP correspondante. Extraire sous C:\Program Files\OpenSSH . Ajouter ce chemin à Path. Exécuter PowerShell en administrateur : .\install-sshd.ps1 . Générer les clés hôte : .\ssh-keygen.exe -A . Dans Services, passer sshd en démarrage automatique, puis démarrer. |
Alternative pour obtenir 9.8 | Compiler soi‑même la branche 9.8 (Visual Studio 2022, SDK 10.0.22621, CMake 3.28, OpenSSL 3.3). – Étape critique : générer libcrypto-3-x64.dll et libssl-3-x64.dll avec les mêmes flags /MD . Ou recourir à un build communautaire signé, après audit. Toujours tester hors production, sauvegarder clés et config. |
Bonnes pratiques | Sauvegarder %ProgramData%\ssh avant toute opération. Désactiver temporairement le port 22 sur le pare‑feu local. Valider avec ssh -V puis tests de connexion. Documenter la version et la méthode déployée pour l’audit. |
Scénario A : accepter la 9.5 (Beta)
Si la conformité ou les contraintes de change management exigent un binaire signé Microsoft, rester sur 9.5 est la voie officielle. Elle corrige déjà plusieurs CVE 2023, tout en restant testée pour Server 2016. Après installation, appliquez ces vérifications :
Get-Service sshd, ssh-agent
⇒ état Running ;Test-NetConnection -ComputerName localhost -Port 22
⇒ TcpTestSucceeded = True ;- analyse Event Viewer ▶ Applications and Services Logs ▶ OpenSSH.
Scénario B : compiler OpenSSH 9.8 soi‑même
- Installer les prérequis : Visual Studio 2022 BuildTools, Desktop Development with C++, CMake, Perl (Chocolatey) et Git.
- Cloner le dépôt OpenSSH‑portable puis basculer sur la
tag V_9_8_P1
. - Appliquer le
patch-w32
du dossiercontrib/win32
. - Lancer :
cmake -G "Visual Studio 17 2022" -A x64 ` -DOPENSSL_ROOT_DIR="C:/OpenSSL-Win64" ` -DCMAKE_INSTALL_PREFIX="C:/Program Files/OpenSSH-9.8"
- Générer puis
msbuild INSTALL.vcxproj /p:Configuration=Release
. - Copier le contenu de
bin\Release
dansC:\Program Files\OpenSSH-9.8
, mettre à jour le Path, et relancerinstall-sshd.ps1
.
Conseil : créez un pipeline CI (Azure DevOps ou GitHub Actions auto‑hébergé) pour tracer l’historique des builds et faciliter la revue de sécurité.
Scénario C : utiliser un build tiers
Certains intégrateurs publient des exécutables portable. Vérifiez impérativement :
- hash SHA‑256 suivi d’une signature Authenticode valide ;
- absence d’import address table hooking sur
advapi32.dll
ouws2_32.dll
; - analyse statique (Defender, ClamAV) + dynamique (Sandbox).
Tests post‑migration
# Connexion locale
ssh localhost -p 22 -o "StrictHostKeyChecking=no"
# Test d'un algorithme FIDO2
ssh -o "PubkeyAcceptedAlgorithms=[sk-ecdsa-sha2-nistp256@openssh.com](mailto:sk-ecdsa-sha2-nistp256@openssh.com)" user\@host
Utilisez des scripts Pester pour automatiser ces contrôles et intégrer l’état dans Prometheus (Windows Exporter).
Rollback rapide
- Arrêter les services
sshd
etssh-agent
. - Renommer le dossier
C:\Program Files\OpenSSH
enOpenSSH.bak
. - Restaurer la sauvegarde précédente.
- Ré‑exécuter
install-sshd.ps1
correspondant à la version antérieure.
Bonnes pratiques de durcissement
- Désactiver password authentication :
PasswordAuthentication no
. - Limiter les utilisateurs dans
sshd_config
:AllowUsers backup@10.0.0.0/16
. - Activer Windows Firewall with Advanced Security – règle sortante vers les CIDR attendus uniquement.
- Surveiller l’apparition de processus
ssh.exe
inattendus via Sysmon (EventID 1
).
Limitations connues sur Server 2016
Le noyau win32k.sys plus ancien empêche l’exploitation native de certaines fonctions de sécurité mémoire (CFG, ACG) dont OpenSSH 9.8 peut profiter sous Server 2022. Les performances cryptographiques AES‑GCM‑SHA2 sont également moindres faute d’optimisation AES‑NI généralisée dans les builds 2016.
FAQ express
La 9.8 sera‑t‑elle proposée via Windows Update ?
Non. OpenSSH reste une Capability on Demand pour les versions avant 2022 ; les mises à jour passent par des packages autonomes.
Puis‑je déployer via GPO ?
Oui. Distribuez le ZIP dans SYSVOL et utilisez un script Startup PowerShell pour effectuer l’extraction et le service restart.
Quid de la compatibilité avec Ansible ?
L’agent ssh.exe
9.8 fonctionne avec ansible_connection=ssh
. Prévoir un serial de 1 lors de la rotation pour éviter de couper la session en cours.
Conclusion
Passer de 9.2 à 9.8 sur Windows Server 2016 nécessite un choix clair entre stabilité et sécurité. La voie officielle s’arrête à 9.5 (Beta) ; au‑delà, il faut compiler ou faire confiance à des bins tiers, après quoi la recette, le durcissement et les tests d’intégration deviennent impératifs pour un service SSH fiable.