Mettre à jour OpenSSH 9.2 vers 9.8 sur Windows Server 2016 : méthodes, compilation et meilleures pratiques

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.

Sommaire

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 accessibleLa 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.8Compiler 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 pratiquesSauvegarder %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 22TcpTestSucceeded = True ;
  • analyse Event Viewer ▶ Applications and Services Logs ▶ OpenSSH.

Scénario B : compiler OpenSSH 9.8 soi‑même

  1. Installer les prérequis : Visual Studio 2022 BuildTools, Desktop Development with C++, CMake, Perl (Chocolatey) et Git.
  2. Cloner le dépôt OpenSSH‑portable puis basculer sur la tag V_9_8_P1.
  3. Appliquer le patch-w32 du dossier contrib/win32.
  4. Lancer :
    cmake -G "Visual Studio 17 2022" -A x64 ` -DOPENSSL_ROOT_DIR="C:/OpenSSL-Win64" ` -DCMAKE_INSTALL_PREFIX="C:/Program Files/OpenSSH-9.8"
  5. Générer puis msbuild INSTALL.vcxproj /p:Configuration=Release.
  6. Copier le contenu de bin\Release dans C:\Program Files\OpenSSH-9.8, mettre à jour le Path, et relancer install-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 ou ws2_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

  1. Arrêter les services sshd et ssh-agent.
  2. Renommer le dossier C:\Program Files\OpenSSH en OpenSSH.bak.
  3. Restaurer la sauvegarde précédente.
  4. 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.

Sommaire