WinRM nie może przetworzyć żądania. Nie można określić typu zawartości odpowiedzi HTTP z komputera docelowego

Podczas konfigurowania WinRM na serwerach w domenie Active Directory napotkałem dziwny problem. Po skonfigurowaniu i włączeniu usługi WinRM na serwerze dozwolone jest łączenie się zdalnie za pomocą narzędzia Windows PowerShell Remoting podczas próby zdalnego połączenia się z tym serwerem za pomocą polecenia Enter-PSSession msk-dp01 W konsoli PowerShell pojawia się następujący błąd WinRM:

Enter-PSSession: Połączenie ze zdalnym serwerem msk-dp01 nie powiodło się. Komunikat o błędzie: Klient WinRM nie może przetworzyć żądania. Nie można określić typu zawartości odpowiedzi HTTP z komputera docelowego. Typ zawartości jest nieprawidłowy lub go brakuje. Aby uzyskać więcej informacji, zobacz temat pomocy about_Remote_Trou Rozwiązywanie problemów..

wiersz: 1 znak: 1

+ Enter-PSSession msk-dp01

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo: InvalidArgument: (msk-dp01: String) [Enter-PSSession], PSRemotingTransportException

+ FullyQualifiedErrorId: CreateRemoteRunspaceFailed

W angielskiej wersji systemu Windows błąd wygląda następująco:

PS C: \ Windows \ system32> Enter-PSSession msk-dp01

Enter-PSSession: Nawiązywanie połączenia ze zdalnym serwerem msk-dp01 nie powiodło się z następującym komunikatem o błędzie: Klient WinRM otrzymał status niepoprawnego żądania HTTP (400), ale usługa zdalna nie zawierała żadnych innych informacji o przyczynie niepowodzenia. Więcej informacji można znaleźć w temacie pomocy about_Remote_Trou Rozwiązywanie problemów.

W linii: 1 znak: 1

+ Enter-PSSession msk-dp01

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo: InvalidArgument: (msk-dp01: String) [Enter-PSSession], PSRemotingTransportException

+ FullyQualifiedErrorId: CreateRemoteRunspaceFailed

Jednocześnie na serwerze porty WinRm (5985 / HTTP, 5986 / HTTPS) odpowiadają i akceptują połączenia. Można sprawdzić dostępność portów TCP WinRM za pomocą narzędzia PortQryV2 lub polecenia cmdlet Test-NetConnection programu PowerShell:

TNC msk-dp01 -port 5985

Jak się okazało, problem był związany z dużym tokenem Kerberos użytkownika, ponieważ użytkownik jest w zbyt wielu grupach domen. Błąd występuje, gdy rozmiar tokena wynosi 16 Kb (zobacz artykuł MaxTokenSize - rozmiar tokena Kerberos). W naszej sytuacji dzieje się to samo, serwer WinRm resetuje żądanie od klienta, ponieważ rozmiar nagłówka pakietu uwierzytelniającego przekracza 16 Kb. W artykule przez odniesienie wspomnieliśmy, że domyślnie IIS używa rozmiaru nagłówka HTTP nie większego niż 16 Kb, aw przypadku problemów z uwierzytelnianiem HTTP z powodu dużego tokena użytkownika, należy go zwiększyć do 64 Kb

Aby rozwiązać problem, musisz zmniejszyć rozmiar tokena (zmniejszyć liczbę grup zabezpieczeń, których użytkownik jest członkiem), a jeśli nie jest to możliwe, w edytorze rejestru na serwerze musisz zmienić wartość następujących parametrów rejestru DWORD w oddziale HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Parameters

  • MaxFieldLength wzrost do 0000ffff (65535)
  • MaxRequestBytes wzrost do 0000ffff (65535)

Pozostaje zrestartować serwer i sprawdzić połączenie WinRm przez Enter-PSSession z klienta.