Cette mise à jour récente pour Windows 11 casse les connexions SSH
Si vous utilisez Windows 11 22H2 ou 23H2 et que vos connexions SSH ne fonctionnent plus, sachez que vous n'êtes pas seul ! Microsoft a confirmé l'existence d'un problème lié à la dernière mise à jour de sécurité. Voici ce que vous devez savoir.
À partir d'une machine sous Windows, il est possible de se connecter à distance en SSH à partir d'une application avec un client SSH, ou d'utiliser le client SSH de Windows, grâce à l'implémentation d'OpenSSH. C'est bien cette seconde possibilité qui est affectée par ce bug.
"Après l'installation de la mise à jour de sécurité Octobre 2024, certains clients signalent que le service OpenSSH (Open Secure Shell) ne démarre pas, ce qui empêche les connexions SSH.", peut-on lire sur le site de Microsoft.
Ce nouveau problème n'affecte pas tous les utilisateurs, mais uniquement ceux dont la machine respecte certaines conditions. Au-delà de concerner Windows 11 22H2 ou Windows 11 23H2, ce bug affecte les machines où au moins l'une de ces mises à jour est installée :
- KB5044285 publiée le 8 octobre 2024, à l'occasion du Patch Tuesday d'Octobre 2024
- KB5044380 publiée le 22 octobre 2024, qui offre un aperçu des changements à venir avec le Patch Tuesday de Novembre 2024
Microsoft précise que les éditions suivantes sont concernées : IoT, Enterprise et Education, sans exclure pour autant l'existence de ce problème avec les éditions Famille et Pro.
Comment résoudre ce problème ?
L'entreprise américaine travaille sur la mise au point d'un correctif pour ce dysfonctionnement. Il devrait être inclus à une future mise à jour du système d'exploitation. En attendant, une solution est proposée et elle s'appuie sur la ligne de commande. Il s'agirait visiblement d'un problème de permissions sur les répertoires de SSH.
"Mettre à jour les autorisations pour C:\ProgramData\ssh et C:\ProgramData\ssh\logs pour permettre un contrôle total pour SYSTEM et le groupe Administrateurs, tout en autorisant l'accès en lecture pour les utilisateurs authentifiés.", voici comment est décrite la solution à appliquer.
Pour cela, ouvrez une console PowerShell en tant qu'administrateur, puis exécutez les commandes suivantes :
$directoryPath = "C:\ProgramData\ssh"
$acl = Get-Acl -Path $directoryPath
$sddlString = "O:BAD:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;AU)"
$securityDescriptor = New-Object System.Security.AccessControl.RawSecurityDescriptor $sddlString
$acl.SetSecurityDescriptorSddlForm($securityDescriptor.GetSddlForm("All"))
Set-Acl -Path $directoryPath -AclObject $acl
Ce premier exemple s'applique au répertoire "C:\ProgramData\ssh". Vous devez ensuite relancer les commandes en modifiant le nom du chemin ciblé au niveau de la première commande, ce qui donnera :
$directoryPath = "C:\ProgramData\ssh\logs"
$acl = Get-Acl -Path $directoryPath
$sddlString = "O:BAD:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;AU)"
$securityDescriptor = New-Object System.Security.AccessControl.RawSecurityDescriptor $sddlString
$acl.SetSecurityDescriptorSddlForm($securityDescriptor.GetSddlForm("All"))
Set-Acl -Path $directoryPath -AclObject $acl
Il s'agit de la solution temporaire officielle fournie par le site de Microsoft.