Active Directory डोमेन में सर्वर्स पर WinRM कॉन्फिगर करते समय, मुझे एक अजीब समस्या का सामना करना पड़ा। Windows सर्वर पर WinRM सेवा को कॉन्फिगर और सक्षम करने के बाद, और Windows PowerShell Remoting के माध्यम से इस पर रिमोट कनेक्शन की अनुमति देने के बाद, Enter-PSSession lon-dc1 कमांड का उपयोग करके सर्वर पर रिमोट कनेक्शन के प्रयास के बाद PowerShell कंसोल में निम्न WinRM एरर दिखाई देता है:
PS C:\Windows\system32> Enter-PSSession lon-dc01
Enter-PSSession : Connecting to remote server lon-dc1 failed with the following error message : 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
आप निम्न एरर मैसेज भी देख सकते हैं:
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.
उसी समय सर्वर पर WinRM पोर्ट्स (5985/HTTP, 5986/HTTPS) रिस्पॉन्ड करते हैं और कनेक्शन स्वीकार करते हैं। आप PortQry टूल या Test-NetConnection PowerShell cmdlet का उपयोग करके WinRM TCP पोर्ट्स की उपलब्धता की जांच कर सकते हैं:
TNC lon-dc1 –port 5985
जैसा कि पता चला, समस्या यूजर के केरबेरोस टोकन के बड़े आकार से संबंधित थी क्योंकि यूजर बहुत सारे डोमेन सिक्योरिटी ग्रुप्स का सदस्य था। एरर तब दिखाई देता है जब टोकन का आकार 16 KB से अधिक हो जाता है (Kerberos MaxTokenSize और सिक्योरिटी ग्रुप्स लेख देखें)। हमारे मामले में, यह उसी तरह होता है, WinRM सर्वर क्लाइंट से अनुरोध को रीसेट करता है, क्योंकि ऑथेंटिकेशन पैकेज हेडर का आकार 16 KB से अधिक हो जाता है। उपरोक्त लिंक पर लेख में हमने उल्लेख किया कि IIS पर डिफ़ॉल्ट HTTP हेडर 16 KB से अधिक नहीं होता, और बड़े यूजर टोकन के कारण HTTP ऑथेंटिकेशन के साथ समस्याओं के मामले में, इसे 64 KB तक बढ़ाया जाना चाहिए।
समस्या को ठीक करने के लिए, आपको टोकन आकार कम करना होगा (उन सिक्योरिटी ग्रुप्स की संख्या कम करें जिनका यूजर सदस्य है), और यदि यह संभव नहीं है, तो सर्वर रजिस्ट्री कुंजी HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters पर निम्न DWORD पैरामीटर्स के मान बदलें।
- MaxFieldLength को 0000ffff (65535) तक बढ़ाएं;
- MaxRequestBytes को 0000ffff (65535) तक बढ़ाएं।
अब बस अपना सर्वर रीस्टार्ट करें और रिमोट क्लाइंट से Enter-PSSession का उपयोग करके अपना WinRM कनेक्शन जांचें।