ฉันกำลังแก้ไขปัญหาที่เซ็นเซอร์ PRTG ไม่รวบรวมข้อมูล Windows Update จากหนึ่งในเซิร์ฟเวอร์ของเรา มันใช้ WinRM และคำสั่ง PowerShell ระยะไกลเพื่อทำเช่นนั้น
เซิร์ฟเวอร์ 1 - เซิร์ฟเวอร์ปัญหา
เซิร์ฟเวอร์ 2 - เซิร์ฟเวอร์ที่ใช้งานได้
เมื่อฉันลองใช้ Enter-PSSession -ComputerName Server1
หรือ winrs -r:Server1 ผบ
เพื่อทดสอบการเชื่อมต่อฉันได้รับข้อผิดพลาดต่อไปนี้:
PS C:\WINDOWS\system32> winrs -r:Server1 dir
ข้อผิดพลาดของ Winrs: WinRM ไม่สามารถดำเนินการตามคำขอได้ เกิดข้อผิดพลาดต่อไปนี้พร้อมรหัสข้อผิดพลาด 0x80090322 ขณะใช้การตรวจสอบสิทธิ์ Kerberos: เกิดข้อผิดพลาดด้านความปลอดภัยที่ไม่รู้จัก
สาเหตุที่เป็นไปได้คือ:
- ชื่อผู้ใช้หรือรหัสผ่านที่ระบุไม่ถูกต้อง
-Kerberos จะใช้เมื่อไม่มีวิธีการตรวจสอบสิทธิ์และไม่มีการระบุชื่อผู้ใช้
-Kerberos ยอมรับชื่อผู้ใช้โดเมน แต่ไม่ยอมรับชื่อผู้ใช้ภายในเครื่อง
- ไม่มีชื่อบริการหลัก (SPN) สำหรับชื่อคอมพิวเตอร์ระยะไกลและพอร์ต
-ไคลเอนต์และคอมพิวเตอร์ระยะไกลอยู่ในโดเมนที่แตกต่างกัน และไม่มีความเชื่อถือระหว่างสองโดเมน
หลังจากตรวจสอบปัญหาข้างต้นแล้ว ให้ลองทำดังต่อไปนี้:
- ตรวจสอบ Event Viewer สำหรับเหตุการณ์ที่เกี่ยวข้องกับการรับรองความถูกต้อง
- เปลี่ยนวิธีการรับรองความถูกต้อง เพิ่มคอมพิวเตอร์ปลายทางไปยังการตั้งค่าการกำหนดค่า WinRM TrustedHosts หรือใช้การขนส่ง HTTPS
โปรดทราบว่าคอมพิวเตอร์ในรายการ TrustedHosts อาจไม่ได้รับการรับรองความถูกต้อง
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า WinRM ให้รันคำสั่งต่อไปนี้: winrm help config
PS C:\WINDOWS\system32> เข้าสู่ PSSession -ComputerName Server1
Enter-PSSession: การเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล Server1 ล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้: WinRM ไม่สามารถดำเนินการตามคำขอได้ เดอะ
เกิดข้อผิดพลาดต่อไปนี้พร้อมรหัสข้อผิดพลาด 0x80090322 ขณะใช้การตรวจสอบสิทธิ์ Kerberos: เกิดข้อผิดพลาดด้านความปลอดภัยที่ไม่รู้จัก
สาเหตุที่เป็นไปได้คือ:
- ชื่อผู้ใช้หรือรหัสผ่านที่ระบุไม่ถูกต้อง
-Kerberos จะใช้เมื่อไม่มีวิธีการตรวจสอบสิทธิ์และไม่มีการระบุชื่อผู้ใช้
-Kerberos ยอมรับชื่อผู้ใช้โดเมน แต่ไม่ยอมรับชื่อผู้ใช้ภายในเครื่อง
- ไม่มีชื่อบริการหลัก (SPN) สำหรับชื่อคอมพิวเตอร์ระยะไกลและพอร์ต
-ไคลเอนต์และคอมพิวเตอร์ระยะไกลอยู่ในโดเมนที่แตกต่างกัน และไม่มีความเชื่อถือระหว่างสองโดเมน
หลังจากตรวจสอบปัญหาข้างต้นแล้ว ให้ลองทำดังต่อไปนี้:
- ตรวจสอบ Event Viewer สำหรับเหตุการณ์ที่เกี่ยวข้องกับการรับรองความถูกต้อง
- เปลี่ยนวิธีการรับรองความถูกต้อง เพิ่มคอมพิวเตอร์ปลายทางไปยังการตั้งค่าการกำหนดค่า WinRM TrustedHosts หรือใช้การขนส่ง HTTPS
โปรดทราบว่าคอมพิวเตอร์ในรายการ TrustedHosts อาจไม่ได้รับการรับรองความถูกต้อง
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า WinRM ให้รันคำสั่งต่อไปนี้: winrm help config สำหรับข้อมูลเพิ่มเติม โปรดดูที่
หัวข้อความช่วยเหลือ about_Remote_Troubleshooting
ที่บรรทัด:1 ตัวอักษร:1
+ Enter-PSSession -ComputerName Server1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId: CreateRemoteRunspace ล้มเหลว
ถ้าฉันเรียกใช้คำสั่งบนเซิร์ฟเวอร์อื่น ๆ ของเรา การเชื่อมต่อสำเร็จ นี่เป็นสิ่งเดียวที่ทำให้ฉันมีปัญหา
ถ้าฉันรันคำสั่ง เข้าสู่ PSSession
กับ - หนังสือรับรอง
สลับกับบัญชีผู้ใช้ของฉัน ฉันได้รับข้อผิดพลาดเดียวกัน แต่ถ้าฉันรันคำสั่งและระบุบัญชีผู้ดูแลระบบภายในของเซิร์ฟเวอร์ มันจะเชื่อมต่อ เซิร์ฟเวอร์อื่นทำงานได้ดี
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -Credential Server1\administrator
[เซิร์ฟเวอร์ 1]: PS C:\Users\Administrator\Documents> ออก
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -credential domain\myuser
Enter-PSSession: การเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล Server1 ล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้: WinRM ไม่สามารถดำเนินการตามคำขอได้ เดอะ
ข้อผิดพลาดต่อไปนี้พร้อมรหัสข้อผิดพลาด 0x80090322 เกิดขึ้นขณะใช้การรับรองความถูกต้องของ Negotiate: เกิดข้อผิดพลาดด้านความปลอดภัยที่ไม่รู้จัก
สาเหตุที่เป็นไปได้คือ:
- ชื่อผู้ใช้หรือรหัสผ่านที่ระบุไม่ถูกต้อง
-Kerberos จะใช้เมื่อไม่มีวิธีการตรวจสอบสิทธิ์และไม่มีการระบุชื่อผู้ใช้
-Kerberos ยอมรับชื่อผู้ใช้โดเมน แต่ไม่ยอมรับชื่อผู้ใช้ภายในเครื่อง
- ไม่มีชื่อบริการหลัก (SPN) สำหรับชื่อคอมพิวเตอร์ระยะไกลและพอร์ต
-ไคลเอนต์และคอมพิวเตอร์ระยะไกลอยู่ในโดเมนที่แตกต่างกัน และไม่มีความเชื่อถือระหว่างสองโดเมน
หลังจากตรวจสอบปัญหาข้างต้นแล้ว ให้ลองทำดังต่อไปนี้:
- ตรวจสอบ Event Viewer สำหรับเหตุการณ์ที่เกี่ยวข้องกับการรับรองความถูกต้อง
- เปลี่ยนวิธีการรับรองความถูกต้อง เพิ่มคอมพิวเตอร์ปลายทางไปยังการตั้งค่าการกำหนดค่า WinRM TrustedHosts หรือใช้การขนส่ง HTTPS
โปรดทราบว่าคอมพิวเตอร์ในรายการ TrustedHosts อาจไม่ได้รับการรับรองความถูกต้อง
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า WinRM ให้รันคำสั่งต่อไปนี้: winrm help config สำหรับข้อมูลเพิ่มเติม โปรดดูที่
หัวข้อความช่วยเหลือ about_Remote_Troubleshooting
ที่บรรทัด:1 ตัวอักษร:1
+ Enter-PSSession -ComputerName Server1 -credential alpenaw2k.local\kemp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId: CreateRemoteRunspace ล้มเหลว
PS C:\WINDOWS\system32> เข้าสู่ PSSession -ComputerName Server2
[เซิร์ฟเวอร์ 2]: PS C:\Users\user\Documents> ออก
PS C:\WINDOWS\system32>
ถ้าฉันวิ่ง ใหม่ PSSession
จากเซิร์ฟเวอร์ภายใน ฉันจะได้รับข้อผิดพลาดเดียวกัน เว้นแต่ว่าฉันจะระบุ - เปิดใช้งานการเข้าถึงเครือข่าย
สลับแล้วจะเชื่อมต่อ สิ่งนี้ทำให้ฉันสับสนตัวแสดงเหตุการณ์ให้รหัสเหตุการณ์ 161 ที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ผู้ใช้และข้อผิดพลาด 142 สำหรับเซสชันที่สร้างไม่สำเร็จ
ถ้าฉันวิ่ง ทดสอบ-WSMan
จากเซิร์ฟเวอร์ภายในและโฮสต์ระยะไกลแสดงว่ากำลังทำงานอยู่
นี่คือการกำหนดค่า WinRM และการกำหนดค่าผู้ฟัง:
PS C:\Windows\system32> winrm รับ winrm/config
กำหนดค่า
MaxEnvelopeSizekb = 500
MaxTimeoutms = 60,000
MaxBatchItems = 32,000
MaxProviderRequests = 4294967295
ลูกค้า
ความล่าช้าของเครือข่าย = 5,000
URLPrefix = wsman
AllowUnencrypted = เท็จ
รับรองความถูกต้อง
พื้นฐาน = จริง
สรุป = จริง
Kerberos = จริง
เจรจา = จริง
ใบรับรอง = จริง
CredSSP = เท็จ
พอร์ตเริ่มต้น
HTTP = 5985
HTTPS = 5986
TrustedHosts = 10.10.10.142
บริการ
RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW; ;;WD)
MaxConcurrentOperations = 4294967295
MaxConcurrentOperationsPerUser = 1500
EnumerationTimeoutms = 240000
การเชื่อมต่อสูงสุด = 300
MaxPacketRetrievalTimeSeconds = 120
AllowUnencrypted = เท็จ
รับรองความถูกต้อง
พื้นฐาน = เท็จ
Kerberos = จริง
เจรจา = จริง
ใบรับรอง = เท็จ
CredSSP = เท็จ
CbtHardeningLevel = ผ่อนคลาย
พอร์ตเริ่มต้น
HTTP = 5985
HTTPS = 5986
ตัวกรอง IPv4 = *
ตัวกรอง IPv6 = *
EnableCompatibilityHttpListener = เท็จ
EnableCompatibilityHttpsListener = เท็จ
ใบรับรองนิ้วหัวแม่มือ
AllowRemoteAccess = จริง
ผู้ชนะ
AllowRemoteShellAccess = จริง
IdleTimeout = 7200000
MaxConcurrentUsers = 2147483647
MaxShellRunTime = 2147483647
MaxProcessesPerShell = 2147483647
MaxMemoryPerShellMB = 2147483647
MaxShellsPerUser = 2147483647
PS C:\Windows\system32> winrm ระบุ winrm/config/listener
ผู้ฟัง
ที่อยู่ = *
การขนส่ง = HTTP
พอร์ท = 5985
ชื่อโฮสต์
เปิดใช้งาน = จริง
URLPrefix = wsman
ใบรับรองนิ้วหัวแม่มือ
ListeningOn = 10.10.10.87, 127.0.0.1, ::1, fe80::4579:db85:c9cb:ead0%6
สิ่งอื่น ๆ ที่ฉันได้ลอง:
- ฉันไม่มีการตั้งค่า GPO สำหรับ WinRM
- ฉันได้ลบและสร้างผู้ฟังใหม่แล้ว
- ฉันได้รีเซ็ตการกำหนดค่าของ WinRM หลายครั้ง
- ไฟร์วอลล์ขั้นสูงของ Windows ถูกปิดใช้งานสำหรับสาธารณะ ส่วนตัว และโดเมน
เครือข่าย
- ฉันได้ตรวจสอบ
ตั้งค่า PSSessionConfiguration - ชื่อ Microsoft.PowerShell - ShowSecurityDescriptorUI
สิทธิ์และ
สิทธิ์ดูเหมือนโอเค
- ฉันใช้ที่อยู่ IP แทนชื่อโฮสต์เหมือนกัน
ผล.
- ฉันได้เพิ่มคอมพิวเตอร์ของฉันลงในรายการโฮสต์ที่เชื่อถือได้แล้ว แต่ไม่ได้เพิ่ม
งาน. สิ่งนี้ไม่จำเป็นแม้ว่าจะเป็นทั้งคอมพิวเตอร์
อยู่ในโดเมนเดียวกัน
- วิ่ง
เปิดใช้งาน PSRemoting -Force
(แม้ว่าจะไม่จำเป็นก็ตาม
เนื่องจาก WinRM เปิดใช้งานตามค่าเริ่มต้นสำหรับ Server 2012 และรุ่นต่อไป)
- ฉันได้เพิ่มผู้ใช้ของฉันใน Local Administrators และ Remote
การจัดการผู้ใช้บนเซิร์ฟเวอร์ที่ไม่มีโชค
- ฉันได้ปรับรีจิสทรีของ
REG เพิ่ม HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
และสิ่งนี้ไม่ได้
ทำงานโดยไม่คำนึงถึงมูลค่าของมัน
- ฉันรีบูตและเรียกใช้
sfc /scannow
เป็นความพยายามครั้งสุดท้าย
ข้อมูลจำเพาะของเซิร์ฟเวอร์ เวิร์กสเตชัน และผู้ใช้ของฉัน:
- บัญชีโดเมนของฉันคือผู้ดูแลโดเมน
- เซิร์ฟเวอร์เป็นมาตรฐาน Windows Server 2019
- เวิร์กสเตชันคือ Windows 10 Pro
- PowerShell เวอร์ชัน 5 สำหรับทั้งคู่
- คอมพิวเตอร์ทั้งสองเครื่องอยู่ในโดเมนเดียวกัน
- คอมพิวเตอร์ทั้งสองเครื่องเป็นรุ่นล่าสุด
ฉันสามารถใช้บัญชีผู้ดูแลระบบท้องถิ่นเพื่อสำรวจข้อมูลนี้และแก้ไขปัญหาการคุกคามของฉัน แต่นั่นไม่ได้แก้ไขปัญหาพื้นฐาน
จากเซิร์ฟเวอร์ระยะไกล ไม่มีรายการข้อผิดพลาดในบันทึกการจัดการระยะไกลของ Windows แต่บนคอมพิวเตอร์ของฉัน ฉันมีสิ่งเหล่านี้:
รหัสเหตุการณ์ข้อผิดพลาด - 142
การแจงนับการดำเนินการ WSMan ล้มเหลว รหัสข้อผิดพลาด 2150858909
รหัสเหตุการณ์ข้อผิดพลาด - 49
การดำเนินการโปรโตคอล WinRM ล้มเหลวเนื่องจากข้อผิดพลาดต่อไปนี้: WinRM ไม่สามารถประมวลผลคำขอได้ เกิดข้อผิดพลาดต่อไปนี้พร้อมรหัสข้อผิดพลาด 0x80090322 ขณะใช้การตรวจสอบสิทธิ์ Kerberos: เกิดข้อผิดพลาดด้านความปลอดภัยที่ไม่รู้จัก
สาเหตุที่เป็นไปได้คือ:
- ชื่อผู้ใช้หรือรหัสผ่านที่ระบุไม่ถูกต้อง
-Kerberos จะใช้เมื่อไม่มีวิธีการตรวจสอบสิทธิ์และไม่มีการระบุชื่อผู้ใช้
-Kerberos ยอมรับชื่อผู้ใช้โดเมน แต่ไม่ยอมรับชื่อผู้ใช้ภายในเครื่อง
- ไม่มีชื่อบริการหลัก (SPN) สำหรับชื่อคอมพิวเตอร์ระยะไกลและพอร์ต
-ไคลเอนต์และคอมพิวเตอร์ระยะไกลอยู่ในโดเมนที่แตกต่างกัน และไม่มีความเชื่อถือระหว่างสองโดเมน
หลังจากตรวจสอบปัญหาข้างต้นแล้ว ให้ลองทำดังต่อไปนี้:
- ตรวจสอบ Event Viewer สำหรับเหตุการณ์ที่เกี่ยวข้องกับการรับรองความถูกต้อง
- เปลี่ยนวิธีการรับรองความถูกต้อง เพิ่มคอมพิวเตอร์ปลายทางไปยังการตั้งค่าการกำหนดค่า WinRM TrustedHosts หรือใช้การขนส่ง HTTPS
โปรดทราบว่าคอมพิวเตอร์ในรายการ TrustedHosts อาจไม่ได้รับการรับรองความถูกต้อง
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า WinRM ให้รันคำสั่งต่อไปนี้: winrm help config..
รหัสเหตุการณ์ข้อผิดพลาด - 161
WinRM ไม่สามารถดำเนินการตามคำขอได้ เกิดข้อผิดพลาดต่อไปนี้พร้อมรหัสข้อผิดพลาด 0x80090322 ขณะใช้การตรวจสอบสิทธิ์ Kerberos: เกิดข้อผิดพลาดด้านความปลอดภัยที่ไม่รู้จัก
สาเหตุที่เป็นไปได้คือ:
- ชื่อผู้ใช้หรือรหัสผ่านที่ระบุไม่ถูกต้อง
-Kerberos จะใช้เมื่อไม่มีวิธีการตรวจสอบสิทธิ์และไม่มีการระบุชื่อผู้ใช้
-Kerberos ยอมรับชื่อผู้ใช้โดเมน แต่ไม่ยอมรับชื่อผู้ใช้ภายในเครื่อง
- ไม่มีชื่อบริการหลัก (SPN) สำหรับชื่อคอมพิวเตอร์ระยะไกลและพอร์ต
-ไคลเอนต์และคอมพิวเตอร์ระยะไกลอยู่ในโดเมนที่แตกต่างกัน และไม่มีความเชื่อถือระหว่างสองโดเมน
หลังจากตรวจสอบปัญหาข้างต้นแล้ว ให้ลองทำดังต่อไปนี้:
- ตรวจสอบ Event Viewer สำหรับเหตุการณ์ที่เกี่ยวข้องกับการรับรองความถูกต้อง
- เปลี่ยนวิธีการรับรองความถูกต้อง เพิ่มคอมพิวเตอร์ปลายทางไปยังการตั้งค่าการกำหนดค่า WinRM TrustedHosts หรือใช้การขนส่ง HTTPS
โปรดทราบว่าคอมพิวเตอร์ในรายการ TrustedHosts อาจไม่ได้รับการรับรองความถูกต้อง
- สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า WinRM ให้รันคำสั่งต่อไปนี้: winrm help config
ฉันสามารถ RDP เข้าสู่เซิร์ฟเวอร์ได้ดี นั่นคือวิธีที่ฉันทำการทดสอบในเครื่อง
ฉันทดสอบสองคำสั่งนี้:
gwmi win32_operatingsystem -ComputerName Server1
ดำเนินการตามปกติโดยไม่มีปัญหา นั่นคือการระบุเซิร์ฟเวอร์ระยะไกลและ RDPing ให้ทำงานในเครื่อง
Get-CimInstance win32_operatingsystem -ComputerName Server1
ฉันไม่สามารถเรียกใช้จากเวิร์กสเตชันของฉันได้ แต่ถ้าฉัน RDP เข้าสู่เซิร์ฟเวอร์และเรียกใช้ มันจะทำงานตามปกติ
ผลลัพธ์ของ ตั้งค่า SPN -X
ส่งคืนไม่มี SPN ที่ทับซ้อนกัน
ผลลัพธ์ของ SetSPN -L
ผลตอบแทน:
ServicePrincipalName ที่ลงทะเบียนสำหรับ CN=Server1,OU=เซิร์ฟเวอร์,OU=องค์กร,DC=องค์กร,DC=LOCAL:
TERMSRV/เซิร์ฟเวอร์1.DOMAIN.LOCAL
WSMAN/เซิร์ฟเวอร์1.DOMAIN.LOCAL
KrbHost/Server1.DOMAIN.LOCAL ที่จำกัด
โฮสต์/เซิร์ฟเวอร์1.DOMAIN.LOCAL
TERMSRV/เซิร์ฟเวอร์1
WSMAN/เซิร์ฟเวอร์1
KrbHost/เซิร์ฟเวอร์ที่ถูกจำกัด1
โฮสต์/เซิร์ฟเวอร์1
ข้อเสนอแนะใด ๆ และทั้งหมดจะได้รับการชื่นชมอย่างมาก