Computer >> 컴퓨터 >  >> 체계 >> Windows Server

WinRM 클라이언트가 잘못된 HTTP 요청 상태를 수신했습니다(400).

Active Directory 도메인의 서버에서 WinRM을 구성할 때 이상한 문제에 직면했습니다. Windows 서버에서 WinRM 서비스를 구성 및 활성화하고 Windows PowerShell Remoting을 통해 해당 서비스에 대한 원격 연결을 허용한 후 Enter-PSSession lon-dc1 명령:

PS C:\Windows\system32> Enter-PSSession lon-dc01

Enter-PSSession:다음 오류 메시지와 함께 원격 서버 lon-dc1에 연결하지 못했습니다. WinRM 클라이언트가 잘못된 HTTP 요청 상태(400)를 수신했지만 원격 서비스에 실패 원인에 대한 다른 정보가 포함되어 있지 않았습니다. 자세한 내용은 about_Remote_Troubleshooting 도움말 항목을 참조하십시오.

행:1 문자:1에서

+ Enter-PSSession lon-dc1

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

+ CategoryInfo :InvalidArgument:(lon-dc1:String) [Enter-PSSession], PSRemotingTransportException

+ FullQualifiedErrorId :CreateRemoteRunspaceFailed

또한 다음과 같은 오류 메시지를 볼 수 있습니다.

WinRM 클라이언트가 요청을 처리할 수 없습니다. 대상 컴퓨터에서 HTTP 응답의 콘텐츠 형식을 결정할 수 없습니다. 콘텐츠 유형이 없거나 잘못되었습니다.

WinRM 클라이언트가 잘못된 HTTP 요청 상태를 수신했습니다(400).

동시에 서버의 WinRM 포트(5985/HTTP, 5986/HTTPS)가 응답하고 연결을 수락합니다. PortQry 도구 또는 Test-NetConnection PowerShell cmdlet을 사용하여 WinRM TCP 포트의 가용성을 확인할 수 있습니다.

TNC lon-dc1 –port 5985

<강한> WinRM 클라이언트가 잘못된 HTTP 요청 상태를 수신했습니다(400).

알고 보니 사용자가 너무 많은 도메인 보안 그룹에 속해 있기 때문에 사용자의 Kerberos 토큰 크기가 크면 문제가 발생했습니다. 토큰 크기가 16KB를 초과하면 오류가 나타납니다. (Kerberos MaxTokenSize 및 보안 그룹 문서 참조). 우리의 경우 인증 패키지 헤더의 크기가 16KB를 초과하기 때문에 WinRM 서버가 클라이언트의 요청을 재설정하는 것과 같은 방식으로 발생합니다. 위 링크의 기사에서 IIS의 기본 HTTP 헤더는 16KB 이하이며, 큰 사용자 토큰으로 인해 HTTP 인증에 문제가 있는 경우 64KB<로 늘려야 한다고 언급했습니다. /강한> .

문제를 해결하려면 토큰 크기를 줄여야 하며(사용자가 속한 보안 그룹의 수를 줄임), 이것이 불가능할 경우 서버 레지스트리 키 에서 다음 DWORD 매개변수 값을 변경합니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters .

  • MaxFieldLength 0000ffff(65535)로 증가;
  • MaxRequestBytes 0000ffff(65535)로 증가합니다.

WinRM 클라이언트가 잘못된 HTTP 요청 상태를 수신했습니다(400).

이제 서버를 다시 시작하고 Enter-PSSession을 사용하여 원격 클라이언트에서 WinRM 연결을 확인하기만 하면 됩니다.