ในบทความนี้ เราจะพิจารณาปัญหาทั่วไปหลายประการที่เกี่ยวข้องกับการออกใบอนุญาต RDS เมื่อไคลเอนต์ RDP ไม่สามารถเชื่อมต่อกับ Windows Server ด้วยบทบาทโฮสต์บริการเดสก์ท็อประยะไกลที่ติดตั้งไว้
ข้อผิดพลาดในการอนุญาตให้ใช้สิทธิ์เมื่อเชื่อมต่อไคลเอ็นต์ RDP กับโฮสต์ RDS อาจปรากฏขึ้นหาก:
- เซิร์ฟเวอร์การให้สิทธิ์การใช้งาน RDS ที่คุณต้องการรับใบอนุญาตไคลเอ็นต์ (RDS CAL) ไม่ได้ระบุไว้ในการตั้งค่าบริการเดสก์ท็อประยะไกล
- เซิร์ฟเวอร์การให้สิทธิ์การใช้งาน RDS มี CAL ที่ใช้งานได้หมด
- ไคลเอ็นต์ RDP พยายามเชื่อมต่อกับใบอนุญาต RDS ชั่วคราวที่หมดอายุ
เซสชันระยะไกลถูกตัดการเชื่อมต่อเนื่องจากไม่มีใบอนุญาตการเข้าถึงไคลเอ็นต์เดสก์ท็อประยะไกลสำหรับคอมพิวเตอร์เครื่องนี้
อันดับแรก มาดูข้อผิดพลาดที่เกี่ยวข้องกับไคลเอนต์ที่ได้รับ RDS CAL จากเซิร์ฟเวอร์ใบอนุญาต
Remote session was disconnected because there are no Remote Desktop client access licenses available for this computer. Please contact the server administrator.
เชื่อมต่อกับเซิร์ฟเวอร์ RDSH ในโหมดการดูแลระบบ (mstsc.exe /admin
) และเรียกใช้เครื่องมือ RD Licensing Diagnoser หากคุณมีทุกการกำหนดค่าอย่างถูกต้อง คุณควรเห็นชื่อของเซิร์ฟเวอร์การให้สัญญาอนุญาต RDS และประเภทของใบอนุญาต (ต่อผู้ใช้/ต่ออุปกรณ์)
เชื่อมต่อกับเซิร์ฟเวอร์ใบอนุญาต RDS โดยใช้คอนโซล RD Licensing Manager (licmgr.exe
) และตรวจสอบว่าคุณมีใบอนุญาตฟรีตามประเภทที่กำหนด (ต่อผู้ใช้หรือต่ออุปกรณ์) หากคุณไม่มี RDS CAL ฟรี คุณต้องซื้อแพ็ค CAL ใหม่ รอให้บุคคลอื่นออกใบอนุญาต หรือเพิกถอนใบอนุญาตที่ไม่ได้ใช้โดยตรงจากคอนโซล (คลิกขวาที่คอมพิวเตอร์/ผู้ใช้ และเลือก เพิกถอนใบอนุญาต )
ในตัวอย่างนี้ คุณจะเห็นว่ามี RDS CAL ฟรี และออกให้กับผู้ใช้ (Issued =44 )
คำแนะนำ . หากเซิร์ฟเวอร์ RDSH ของคุณถูกปรับใช้ใน เวิร์กกรุ๊ป (ไม่ได้อยู่ในโดเมน AD) คุณ ไม่สามารถใช้ต่อผู้ใช้ ใบอนุญาต RDS ในนั้น เมื่อเชื่อมต่อแล้ว ผู้ใช้ของคุณจะได้รับใบอนุญาตต่ออุปกรณ์ในเครื่องชั่วคราวเสมอเป็นไปได้มากว่าในกรณีนี้คอมพิวเตอร์ไคลเอนต์กำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ RDSH ของคุณด้วยสิทธิ์การใช้งาน RDP ชั่วคราวที่หมดอายุ (หากเซิร์ฟเวอร์สิทธิ์การใช้งาน RDS ของคุณไม่พร้อมใช้งานเมื่อไคลเอนต์เชื่อมต่อครั้งแรก ไคลเอนต์จะได้รับสิทธิ์การใช้งาน RDP ชั่วคราวเป็นเวลา 180 วัน) ในกรณีนี้ คุณต้องรีเซ็ตใบอนุญาตที่หมดอายุนี้ในรีจิสทรีในอุปกรณ์ไคลเอ็นต์
ทำสิ่งต่อไปนี้บนคอมพิวเตอร์ไคลเอนต์ (Windows 10 ในตัวอย่างนี้):
- เริ่มตัวแก้ไขรีจิสทรี (
regedit.exe
); - ลบรีจิสตรีคีย์ HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing;
- ปิดตัวแก้ไขรีจิสทรีและเรียกใช้
mstsc.exe
(Remote Desktop Connection) ในฐานะผู้ดูแลระบบ - เชื่อมต่อกับเซิร์ฟเวอร์ RDS ของคุณ ในกรณีนี้ คีย์ reg MSlicensing จะถูกสร้างขึ้นใหม่โดยอัตโนมัติ และคอมพิวเตอร์จะได้รับใบอนุญาต RDP ใหม่
The remote computer disconnected the session because of an error in the licensing protocol. Please try connecting to the remote computer again or contact your server administrator.
เซสชันระยะไกลถูกตัดการเชื่อมต่อเนื่องจากไม่มีเซิร์ฟเวอร์สิทธิ์ใช้งานเดสก์ท็อประยะไกลที่พร้อมให้สิทธิ์ใช้งาน
ลูกค้ารายหนึ่งประสบปัญหากับฟาร์มที่ปรับใช้ของเซิร์ฟเวอร์ RDS บน Windows Server 2012 R2 ของ ด้วยเหตุผลบางประการ เซิร์ฟเวอร์ RDS ได้หยุดการออกใบอนุญาตใช้งานเทอร์มินัลให้กับผู้ใช้ แม้ว่าจะมีการติดตั้งและกำหนดค่าบทบาทเซิร์ฟเวอร์ใบอนุญาตแล้ว และเปิดใช้งาน RDP CAL แล้ว
เมื่อผู้ใช้พยายามเชื่อมต่อกับเทอร์มินัลเซิร์ฟเวอร์ผ่าน RDP ข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:
The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license. Please contact the server administrator.
เชื่อมต่อกับคอนโซลเซิร์ฟเวอร์ในโหมดการดูแลระบบ (mstsc /admin
). เปิดตัวจัดการเซิร์ฟเวอร์ และไปที่การตั้งค่า RDS (บริการเดสก์ท็อประยะไกล -> ภาพรวมการทำให้ใช้งานได้ -> งาน -> แก้ไขคุณสมบัติการทำให้ใช้งานได้ ). ตรวจสอบให้แน่ใจว่าได้ระบุเซิร์ฟเวอร์สิทธิ์การใช้งานเดสก์ท็อประยะไกลและประเภท RDS CAL ที่ถูกต้อง (ต่ออุปกรณ์หรือต่อผู้ใช้) ในการกำหนดค่า RDSH
คุณยังสามารถตรวจสอบการตั้งค่าเซิร์ฟเวอร์การออกใบอนุญาต RDS ผ่าน PowerShell:
Get-RDLicenseConfiguration
อย่างที่คุณเห็น LicenseServer ถูกระบุในการกำหนดค่า และ PerUser ใช้ประเภทใบอนุญาต
ตรวจสอบว่าพอร์ตต่อไปนี้ไม่ถูกบล็อกโดยไฟร์วอลล์เมื่อเข้าถึงจากโฮสต์ RDSH ไปยัง RDS LicenseingServer:TCP 135, UDP 137, UDP 138, TCP 139, TCP 445, TCP 49152–65535 (RPC range)
. หากเซิร์ฟเวอร์ใบอนุญาต RDS ไม่พร้อมใช้งาน License Diagnoser จะแสดงข้อผิดพลาด:
License server rdslic_hostname is not available. This could be caused by network connectivity problems, the Remote Desktop Licensing service is stopped on the license server, or RD Licensing isn't available.
รีเซ็ตระยะเวลาผ่อนผัน RDS 120 วัน (L$RTMTIMEBOMB)
ดูเหตุการณ์อย่างใกล้ชิดใน Event Viewer บนโฮสต์ RDS อาจมีข้อผิดพลาดเช่นนี้:
EventID: 1128 Source: TerminalServices-RemoteConnectionManagerThe RD Licensing grace period has expired and the service has not registered with a license server with installed licenses. A RD Licensing server is required for continuous operation. A Remote Desktop Session Host server can operate without a license server for 120 days after initial start up.
RD License Diagnoser มักจะแสดงข้อผิดพลาด:
The grace period for the Remote Desktop Session Host server has expired, but the RD Session Host server hasn't been configured with any license servers. Connections to the RD Session Host server will be denied unless a license server is configured for the RD Session Host server.
ซึ่งหมายความว่าระยะเวลาผ่อนผันของคุณสำหรับเซิร์ฟเวอร์ RDSH หมดอายุแล้ว และคุณจำเป็นต้องขยายโหมดผ่อนผัน หรือเปิดใช้งานโฮสต์บนเซิร์ฟเวอร์ใบอนุญาต RDS
ระยะเวลาผ่อนผัน RDS ช่วยให้คุณใช้บริการเดสก์ท็อประยะไกลบน Windows Server ได้ฟรี 120 วัน เป็นไปได้มากว่าเมื่อเข้าสู่ระบบ RDSH ในฐานะผู้ดูแลระบบ คุณเห็นข้อผิดพลาด:Licensing mode for the Remote Desktop Session Host is not configured. Remote Desktop Service will stop working in 86 days.
จำนวนวันก่อนสิ้นสุดระยะเวลาผ่อนผัน RDS สามารถดูได้จากพรอมต์คำสั่งที่ยกระดับ:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
โปรดทราบว่า DaysLeft = 0
. ซึ่งหมายความว่าช่วงผ่อนผันหมดอายุในโฮสต์ RDSH นี้แล้ว
หากต้องการขยายระยะเวลาผ่อนผันใน RDS คุณต้องลบพารามิเตอร์รีจิสทรีบนเซิร์ฟเวอร์ ซึ่งจะกำหนดเวลาการให้สิทธิ์ใช้งานช่วงเวลาผ่อนผัน วันที่ที่กำหนดระยะเวลาผ่อนผัน RDS สำหรับเซิร์ฟเวอร์จะถูกเก็บไว้ในพารามิเตอร์รีจิสทรี reg_binary L$RTMTIMEBOM B (ชื่อค่อนข้างตลก –TIME BOMB….) ซึ่งอยู่ในรีจิสตรีคีย์ต่อไปนี้:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
คุณต้องลบพารามิเตอร์ L$RTMTIMEBOMB ออกจากรีจิสทรี อย่างไรก็ตาม ผู้ดูแลระบบไม่มีสิทธิ์เพียงพอในการดำเนินการนี้
Unable to delete all specified values.
หากต้องการลบพารามิเตอร์รีจิสทรีนี้ คุณต้องเปิดสิทธิ์ของคีย์หลักและให้สิทธิ์บัญชีแก่เจ้าของคีย์ จากนั้นตั้งค่าสิทธิ์การควบคุมทั้งหมดสำหรับกลุ่มผู้ดูแลระบบ (ฉันจะไม่อธิบายกระบวนการโดยละเอียด)
ตอนนี้ คลิกขวาที่พารามิเตอร์ L$RTMTIMEBOMB แล้วลบทิ้ง
รีสตาร์ทเซิร์ฟเวอร์ RDSH ของคุณและเชื่อมต่อโดยใช้ไคลเอนต์ RDP ตรวจสอบให้แน่ใจว่าได้ออก RDS CAL เรียบร้อยแล้วโดยใช้ Remote Desktop Licensing Manager
หากไม่ได้รับ RDS CAL ให้ตรวจสอบว่ามีเหตุการณ์ในตัวแสดงเหตุการณ์หรือไม่:
Event ID: 1130 Source: TerminalServices-RemoteConnectionManager The Remote Desktop Session Host server does not have a Remote Desktop license server specified. To specify a license server for the Remote Desktop Session Host server, use the Remote Desktop Session Host Configuration tool.
ใช้คำสั่ง PowerShell นี้ ตรวจสอบให้แน่ใจว่าได้ตั้งค่าเซิร์ฟเวอร์การอนุญาตให้ใช้สิทธิ์ RDS:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()
อย่างที่คุณเห็น ไม่ได้ตั้งค่าเซิร์ฟเวอร์การออกใบอนุญาต RDS (SpecifiedLSList ว่างเปล่า) บังคับตั้งค่าเซิร์ฟเวอร์การออกใบอนุญาต RD ด้วยคำสั่งต่อไปนี้:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("lon-rdslic.woshub.com")
- ใช้เซิร์ฟเวอร์สิทธิ์การใช้งานเดสก์ท็อประยะไกลที่ระบุ
- ตั้งค่าโหมดการออกใบอนุญาตระยะไกล
โฮสต์ RDS จะสามารถขอรับใบอนุญาตจากเซิร์ฟเวอร์การให้สิทธิ์ RDS และออกใบอนุญาตให้กับผู้ใช้ RDP ของคุณได้