Khi cấu hình WinRM trên các máy chủ trong miền Active Directory, tôi đã gặp một vấn đề lạ. Sau khi dịch vụ WinRM được cấu hình và bật trên máy chủ Windows, và kết nối từ xa được cho phép thông qua Windows PowerShell Remoting, lỗi WinRM sau xuất hiện trong console PowerShell sau khi cố gắng kết nối từ xa tới máy chủ bằng lệnh Enter-PSSession lon-dc1:
PS C:\Windows\system32> Enter-PSSession lon-dc01
Enter-PSSession : Kết nối với máy chủ từ xa lon-dc1 thất bại với thông báo lỗi sau: The WinRM client received an HTTP bad request status (400), but the remote service did not include any other information about the cause of the failure. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession lon-dc1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (lon-dc1 :String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
Cũng có thể thấy thông báo lỗi sau:
The WinRM client cannot process the request. It cannot determine the content type of the HTTP response from the destination computer. The content type is absent or invalid.
Cùng lúc đó, cổng WinRM trên máy chủ (5985/HTTP, 5986/HTTPS) phản hồi và chấp nhận kết nối. Bạn có thể kiểm tra tính khả dụng của cổng TCP WinRM bằng công cụ PortQry hoặc cmdlet PowerShell Test-NetConnection:
TNC lon-dc1 –port 5985
Như đã tiết lộ, vấn đề liên quan đến kích thước lớn của token Kerberos của người dùng do người dùng là thành viên của quá nhiều nhóm bảo mật miền. Lỗi xuất hiện khi kích thước token vượt quá 16 KB (xem bài viết Kerberos MaxTokenSize và Security Groups). Trong trường hợp của chúng tôi, nó xảy ra theo cùng một cách, máy chủ WinRM đặt lại yêu cầu từ client, vì kích thước gói tiêu đề xác thực vượt quá 16 KB. Trong bài viết ở liên kết trên, chúng tôi đã đề cập rằng tiêu đề HTTP mặc định trên IIS không quá 16 KB, và trong trường hợp vấn đề với xác thực HTTP do token người dùng lớn, cần tăng lên 64 KB.
Để khắc phục vấn đề, bạn cần giảm kích thước token (giảm số nhóm bảo mật người dùng là thành viên), và nếu không thể, hãy thay đổi giá trị của các tham số DWORD sau trên khóa registry máy chủ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters .
- MaxFieldLength tăng lên 0000ffff (65535);
- MaxRequestBytes tăng lên 0000ffff (65535).
Bây giờ chỉ cần khởi động lại máy chủ và kiểm tra kết nối WinRM từ client từ xa bằng Enter-PSSession.