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 포트(5985/HTTP, 5986/HTTPS)가 응답하고 연결을 수락합니다. PortQry 도구 또는 Test-NetConnection PowerShell cmdlet을 사용하여 WinRM TCP 포트의 가용성을 확인할 수 있습니다.
TNC lon-dc1 –port 5985
<강한>
알고 보니 사용자가 너무 많은 도메인 보안 그룹에 속해 있기 때문에 사용자의 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)로 증가합니다.
이제 서버를 다시 시작하고 Enter-PSSession을 사용하여 원격 클라이언트에서 WinRM 연결을 확인하기만 하면 됩니다.