Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

ไคลเอนต์ WinRM ได้รับสถานะคำขอ HTTP ไม่ถูกต้อง (400)

เมื่อกำหนดค่า WinRM บนเซิร์ฟเวอร์ในโดเมน Active Directory ฉันประสบปัญหาแปลก ๆ หลังจากกำหนดค่าและเปิดใช้งานบริการ WinRM บนเซิร์ฟเวอร์ Windows และอนุญาตให้เชื่อมต่อระยะไกลผ่าน Windows PowerShell Remoting ข้อผิดพลาด WinRM ต่อไปนี้จะปรากฏขึ้นในคอนโซล PowerShell หลังจากพยายามเชื่อมต่อระยะไกลไปยังเซิร์ฟเวอร์โดยใช้ 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

+ FullyQualifiedErrorId :CreateRemoteRunspaceFailed

นอกจากนี้ คุณยังสามารถเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้:

ไคลเอนต์ WinRM ไม่สามารถดำเนินการตามคำขอได้ ไม่สามารถระบุชนิดเนื้อหาของการตอบสนอง HTTP จากคอมพิวเตอร์ปลายทางได้ ไม่มีประเภทเนื้อหาหรือไม่ถูกต้อง

ไคลเอนต์ WinRM ได้รับสถานะคำขอ HTTP ไม่ถูกต้อง (400)

ในเวลาเดียวกันพอร์ต WinRM บนเซิร์ฟเวอร์ (5985/HTTP, 5986/HTTPS) จะตอบสนองและยอมรับการเชื่อมต่อ คุณสามารถตรวจสอบความพร้อมใช้งานของพอร์ต WinRM TCP โดยใช้เครื่องมือ PortQry หรือ Test-NetConnection PowerShell cmdlet:

TNC lon-dc1 –port 5985

ไคลเอนต์ WinRM ได้รับสถานะคำขอ HTTP ไม่ถูกต้อง (400)

เมื่อมันปรากฏออกมา ปัญหาเกี่ยวข้องกับโทเค็น Kerberos ขนาดใหญ่ของผู้ใช้ เนื่องจากผู้ใช้เป็นสมาชิกของกลุ่มความปลอดภัยของโดเมนมากเกินไป ข้อผิดพลาดปรากฏขึ้นเมื่อขนาดของโทเค็นเกิน 16 KB (ดูบทความ Kerberos MaxTokenSize และกลุ่มความปลอดภัย) ในกรณีของเรา มันเกิดขึ้นในลักษณะเดียวกัน เซิร์ฟเวอร์ WinRM รีเซ็ตคำขอจากไคลเอนต์ เนื่องจากขนาดของส่วนหัวของแพ็คเกจการตรวจสอบสิทธิ์เกิน 16 KB ในบทความเกี่ยวกับลิงก์ด้านบน เราได้กล่าวถึงส่วนหัว HTTP เริ่มต้นบน IIS ไม่เกิน 16 KB และในกรณีที่เกิดปัญหากับการตรวจสอบสิทธิ์ HTTP เนื่องจากโทเค็นผู้ใช้ขนาดใหญ่ จะต้อง เพิ่มเป็น 64 KB .

ในการแก้ไขปัญหา คุณต้องลดขนาดโทเค็น (ลดจำนวนกลุ่มความปลอดภัยที่ผู้ใช้เป็นสมาชิก) และหากไม่สามารถทำได้ ให้เปลี่ยนค่าของพารามิเตอร์ DWORD ต่อไปนี้บนคีย์รีจิสทรีของเซิร์ฟเวอร์ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters .

  • MaxFieldLength เพิ่มเป็น 0000ffff (65535);
  • MaxRequestBytes เพิ่มเป็น 0000ffff (65535)

ไคลเอนต์ WinRM ได้รับสถานะคำขอ HTTP ไม่ถูกต้อง (400)

ตอนนี้เพียงแค่รีสตาร์ทเซิร์ฟเวอร์ของคุณ และตรวจสอบการเชื่อมต่อ WinRM จากไคลเอนต์ระยะไกลโดยใช้ Enter-PSSession