เมื่อกำหนดค่า 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 บนเซิร์ฟเวอร์ (5985/HTTP, 5986/HTTPS) จะตอบสนองและยอมรับการเชื่อมต่อ คุณสามารถตรวจสอบความพร้อมใช้งานของพอร์ต WinRM TCP โดยใช้เครื่องมือ PortQry หรือ Test-NetConnection PowerShell cmdlet:
TNC lon-dc1 –port 5985
เมื่อมันปรากฏออกมา ปัญหาเกี่ยวข้องกับโทเค็น 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 จากไคลเอนต์ระยะไกลโดยใช้ Enter-PSSession