Partager via


Erreur 0x80090322 lorsque vous connectez PowerShell à un serveur distant via WinRM

Cet article fournit une résolution à l’erreur 0x80090322 lors de la connexion de PowerShell à un serveur distant via Windows Remote Management (WinRM).

S’applique à : versions prises en charge de Windows et Windows Server
Numéro de base de connaissances d’origine : 4549715

Symptômes

Supposons que vous essayez de démarrer une session PowerShell avec un serveur distant. Lorsque vous exécutez la Enter-PSSession -Computername <FQDN> commande, vous recevez l’erreur suivante :

Entrée-PSSession : La connexion au nom de domaine> complet du serveur <distant a échoué avec le message d’erreur suivant : WinRM ne peut pas traiter la requête. L’erreur suivante avec le code d’erreur 0x80090322 s’est produite lors de l’utilisation de l’authentification Kerberos : une erreur de sécurité inconnue s’est produite.

Cause

Par défaut, PowerShell utilise un nom de principal de service HTTP (SPN) au format HTTP/<FQDN> pour se connecter au serveur distant. Ce problème se produit lorsque le SPN est déjà inscrit auprès d’un autre compte de service dans la forêt ou inscrit manuellement dans un service web s’exécutant sur l’ordinateur.

Résolution

Tout d’abord, nous devons identifier le SPN. Exécutez la commande setspn -q http/<FQDN> pour identifier si ce SPN est inscrit dans un compte de service.

Utilisez ensuite l’une de ces options pour résoudre ce problème :

Option 1

Vérifiez si vous avez toujours besoin de l’inscription spN sur un compte de service. Supprimez l’inscription spN si ce n’est pas nécessaire.

Option 2 :

Configurez un SPN dédié pour WinRM en spécifiant le numéro de port. Exécutez ces commandes pour inscrire le SPN :

Setspn -s HTTP/servername:5985 <servername>
Setspn -s HTTP/FQDN:5985 <servername>

Par exemple :

Setspn -s HTTP/Mem1:5985 Mem1
Setspn -s HTTP/Mem1.contoso.com:5985 Mem1

Utilisez la commande PowerShell suivante pour spécifier un port pour la Enter-PSSession commande :

Enter-PSSession -ComputerName <servername or FQDN> -SessionOption (New-PSSessionOption -IncludePortInSPN)

Par exemple :

Enter-PSSession -Computername mem1.contoso.com -SessionOption (New-PSSessionOption -IncludePortInSPN)

Option 3

Configurez le client WinRM pour utiliser un SPN WSMAN (Web Services-Management) au lieu d’un SPN HTTP en créant la valeur de Registre suivante :

Clé :HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client
Nom de la valeur : spn_prefix
Type de valeur : REG_SZ (chaîne)
Données de valeur : WSMAN

Note

Cette opération doit être effectuée sur l’ordinateur client.

Capture d’écran montrant le registre modifié.

La requête Kerberos ressemble à l’exemple suivant après avoir apporté la modification du Registre. Dans une requête TGS (Ticket Granting Server), le SPN est WSMAN/mem1.contoso.com au lieu de HTTP/mem1.contoso.com.

Client.contoso.com DC1.contoso.com KerberosV5 KerberosV5 :TGS Request Realm : CONTOSO.COM Sname : WSMAN/mem1.contoso.com

Vous pouvez également utiliser la reg add commande :

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Client /v spn_prefix /t REG_SZ /d "WSMAN" /f

Ensuite, ajoutez les SPN suivants au compte d’ordinateur :

Setspn -s WSMAN/<servername> <servername>
Setspn -s WSMAN/<servername>.<domainname> <servername>

Par exemple :

Setspn -s WSMAN/mem1 mem1
Setspn -s WSMAN/mem1.contoso.com mem1