كيفية إصلاح "عميل WinRM لا يستطيع معالجة الطلب. العلم الذي يحدد آلية المصادقة المستخدمة غير صحيح".
يقدم هذا الدليل الشامل الوصف والحل خطوة بخطوة لخطأ إشارة المصادقة في إدارة Windows عن بعد (WinRM).
وصف الخطأ
This error occurs when a WinRM client attempts to establish a remote connection to a target server, but the authentication method specified by the client is either disabled, unsupported, or mismatched on the remote server.
الأسباب الشائعة
- Disabled Authentication Providers: يحاول العميل استخدام Kerberos أو Negotiate أو CredSSP ، ولكن يتم إيقاف تشغيل هذا المزود المحدد في تكوين WinRM.
- Workgroup vs. Domain Mismatch: Trying to connect to a machine outside a trusted active directory domain without using explicit Basic authentication or configuring the
TrustedHostsالقائمة. - Incorrect Connection Flags: قاعدة بيانات PowerShell أو التطبيق الذي يبدأ الاتصال يجبر صراحة على نوع المصادقة الذي يرفض الخادم قبوله.
- HTTPS/HTTP Confusion: محاولة تمرير بيانات اعتماد غير مشفرة عبر اتصال HTTP غير مشفر عندما تفرض سياسة الخادم بشكل صارم HTTPS أو حركة المرور المشفرة.
إصلاحات خطوة بخطوة
اتبع هذه الحلول لحل المشكلة. ستحتاج إلى امتيازات المسؤول على كل من العميل والجهاز البعيد.
الحل 1: تمكين أنواع المصادقة الضرورية
You must ensure both the client and server have the required authentication protocols enabled (usually Negotiate و.. Kerberos )
- افتح PowerShell as an Administrator على جهاز العميل
- قم بتشغيل الأمر التالي للتحقق من إعدادات المصادقة الحالية للعميل:
Get-ChildItem WSMan:\localhost\Client\Auth - انظري إلى الإخراج
NegotiateأوKerberosتم تعيينها علىFalse، تمكينهم من خلال تشغيل:Set-Item WSMan:\localhost\Client\Auth\Negotiate -Value $true Set-Item WSMan:\localhost\Client\Auth\Kerberos -Value $true - كرر العملية للإعدادات الجانبية للخدمة / الخادم إذا كنت تقوم بتكوين الجهاز البعيد:
Set-Item WSMan:\localhost\Service\Auth\Negotiate -Value $true Set-Item WSMan:\localhost\Service\Auth\Kerberos -Value $true - إعادة تشغيل خدمة WinRM لتطبيق التغييرات:
Restart-Service WinRM
الحل 2: تهيئة TrustedHosts (لبيئات مجموعات العمل)
إذا لم تكن أجهزة الكمبيوتر في نفس نطاق Active Directory ، فإن جهاز العميل سيرفض الاتصال ما لم يكن الخادم موثوقًا به صراحة.
- افتح PowerShell as an Administrator على جهاز العميل
- إضافة عنوان IP أو اسم المضيف لجهاز الكمبيوتر البعيد إلى قائمة المضيفين الموثوق بهم:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "REMOTE_COMPUTER_IP_OR_NAME"(ملاحظة: يمكنك استخدام
to trust all hosts if you are in a secure private network, though this is less secure:مجموعة العنصر WSMan:\localhost\Client\TrustedHosts -Value " " `) - اضغط Y وأضرب Enter عندما يطلب منك تأكيد التغييرات.
الحل 3: حدد نوع المصادقة بشكل صريح في أمرك
عند بدء الاتصال عن بُعد، قم بإملاء علامة المصادقة يدوياً بدلاً من السماح لـ Windows بتخمينها.
- عندما تستخدم
Enter-PSSessionأوInvoke-Commandإضافة-Authenticationالمعلم - مثال على بيئات النطاقات (المعيار الافتراضي):
Enter-PSSession -ComputerName "RemotePC" -Authentication Negotiate - مثال لبيئات مجموعات العمل (تتطلب بيانات اعتماد الإدارة المحلية للجهاز البعيد):
$cred = Get-Credential Enter-PSSession -ComputerName "Remote_IP" -Authentication Basic -Credential $cred
الحل 4: السماح بالحركة غير المشفرة (إذا لم تستخدم HTTPS)
إذا كنت تتصل عبر HTTP (الميناء 5985) وليس HTTPS (الميناء 5986) ، فقد يمنع WinRM التبادل إذا كانت سياسات حركة المرور غير المشفرة صارمة.
- افتح PowerShell as an Administrator.
- تمكين حركة المرور غير المشفرة على العميل:
Set-Item WSMan:\localhost\Client\AllowUnencrypted -Value $true - تمكين حركة المرور غير المشفرة على الخادم:
Set-Item WSMan:\localhost\Service\AllowUnencrypted -Value $true - إعادة تشغيل خدمة WinRM:
Restart-Service WinRM
قد يكون هناك بعض الأخطاء. Learn Microsoft