Active Directory ডোমেনে সার্ভারগুলোর WinRM কনফিগার করার সময় আমি একটি বিচিত্র সমস্যায় পড়েছিলাম। উইন্ডোজ সার্ভারে WinRM সার্ভিস কনফিগার ও ইনেবল করার পর এবং Windows PowerShell Remoting-এর মাধ্যমে রিমোট কানেকশন অনুমতি দিলেও, Enter-PSSession lon-dc1 কমান্ড ব্যবহার করে রিমোট সার্ভারের সাথে কানেক্ট করার চেষ্টায় পাওয়ারশেল কনসোলে নিচের 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 পোর্টগুলো সার্ভারে (৫৯৮৫/HTTP, ৫৯৮৬/HTTPS) রেসপন্ড করছে এবং কানেকশন এক্সেপ্ট করছে। PortQry টুল বা Test-NetConnection পাওয়ারশেল ক্মডলেট ব্যবহার করে WinRM TCP পোর্টের উপলব্ধতা চেক করা যায়:
TNC lon-dc1 –port 5985
বादে দেখা গেল, সমস্যাটি ব্যবহারকারীর বড় আকারের কেরবেরোস টোকেনের সাথে সম্পর্কিত যেহেতু ব্যবহারকারী অত্যাধিক ডোমেন সিকিউরিটি গ্রুপের সদস্য। এররটি দেখা দেয় যখন টোকেনের আকার ১৬ KB-র বেশি হয় (দেখুন Kerberos MaxTokenSize and Security Groups আর্টিকেল)। আমাদের কেসেও একই ঘটল, WinRM সার্ভার ক্লায়েন্টের রিকোয়েস্ট রিসেট করে দেয় কারণ অথেন্টিকেশন প্যাকেজ হেডারের আকার ১৬ KB-র বেশি হয়। লিংক করা আর্টিকেলে আমরা বলেছিলাম যে IIS-এ ডিফল্ট HTTP হেডার ১৬ KB-র বেশি নয়, এবং বড় ব্যবহারকারী টোকেনের কারণে HTTP অথেন্টিকেশন সমস্যা হলে এটিকে ৬৪ KB-এ বাড়াতে হয়।
সমস্যাটি ফিক্স করতে আপনাকে টোকেনের আকার ছোট করতে হবে (ব্যবহারকারীর সিকিউরিটি গ্রুপ সদস্যতা কমাতে হবে), এবং যদি সেটি সম্ভব না হয়, তবে সার্ভার রেজিস্ট্রি কী HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters-এ নিচের DWORD প্যারামিটারগুলো পরিবর্তন করুন:
- MaxFieldLength বাড়িয়ে 0000ffff (65535) করুন;
- MaxRequestBytes বাড়িয়ে 0000ffff (65535) করুন।
এখন সার্ভার রিস্টার্ট করুন এবং রিমোট ক্লায়েন্ট থেকে Enter-PSSession ব্যবহার করে WinRM কানেকশন চেক করুন।