บทความนี้อธิบายวิธีติดตั้งและกำหนดค่าบทบาทเซิร์ฟเวอร์เทอร์มินัล Remote Desktop Session Host ใน Workgroup (ไม่มีโดเมน Active Directory) และไม่มีบทบาทเพิ่มเติมอื่นๆ (Connection Broker, Remote Desktop Web Access, RDS Gateway) นี่จะเป็นการปรับใช้ RDS เซิร์ฟเวอร์เดียวบน Windows Server 2019/2022
Windows Server ที่มีบทบาท RDSH (Remote Desktop Session Host) อนุญาตให้ผู้ใช้หลายคนเชื่อมต่อกับเซิร์ฟเวอร์พร้อมกันโดยใช้ RDP (โดยค่าเริ่มต้น อนุญาตเพียง 2 การเชื่อมต่อ Remote Desktop สำหรับผู้ดูแลระบบบน Windows Server) เซสชันแยกต่างหากจะถูกสร้างสำหรับแต่ละผู้ใช้ และพวกเขาเข้าถึงสภาพแวดล้อมเดสก์ท็อปส่วนตัวของตนเอง
หากคุณวางแผนที่จะใช้โฮสต์ RDS แยกต่างหากใน Workgroup โปรดทราบว่าฟังก์ชันของมันถูกจำกัด ไม่สามารถขยายเป็นฟาร์ม RDS ที่มีคุณสมบัติครบถ้วนได้ ไม่สามารถสร้างคอลเลกชันแยกหรือ RemoteApp ไม่มี Connection Broker ไม่สามารถใช้ User Profile Disks ไม่มีเครื่องมือจัดการแบบรวมศูนย์ บริการ RDS จะไม่พร้อมใช้งานสำหรับผู้ใช้ระหว่างการดำเนินการบำรุงรักษาหากโฮสต์อยู่ในโหมด drain
วิธีติดตั้งบทบาท Remote Desktop Services บน Windows Server 2019/2022
สมมติว่าคุณติดตั้ง Windows Server และกำหนดค่าพื้นฐานแล้ว (ที่อยู่ IP, ชื่อเซิร์ฟเวอร์, เวลา/วันที่, ติดตั้งอัปเดต ฯลฯ) จากนั้นคุณสามารถติดตั้งบทบาท RDS ได้ สามารถใช้ Server Manager หรือ PowerShell
เพื่อติดตั้ง RDS โดยใช้ Server Manager ให้เลือก Remote Desktop Session Host และ Remote Desktop Licensing ใน Role-based or Feature-based installation → Server roles → Remote Desktop Services ในส่วนประกอบ RDS (ยอมรับการติดตั้งคุณสมบัติ RSAT เพื่อจัดการบทบาท)
โปรดทราบว่าหากคุณเลือก Remote Desktop Services installation ใน Server Manager วิซาร์ดจะติดตั้ง RD Connection Broker และ Web Access อัตโนมัติในโหมด Standard deployment หรือ Quick Start ในกรณีของเรา เราไม่ต้องการบทบาทเหล่านี้ เนื่องจากเรากำลังติดตั้ง RDS โฮสต์แบบสแตนด์อโลน
คุณยังสามารถติดตั้งบทบาท Windows Server โดยใช้ PowerShell:
Install-WindowsFeature -Name RDS-Licensing, RDS-RD-Server –IncludeManagementTools
ตรวจสอบว่าบทบาท RDS ใดบ้างที่ติดตั้งบนเซิร์ฟเวอร์ของคุณ:
Get-WindowsFeature -Name RDS* | Where installed
รีสตาร์ทเซิร์ฟเวอร์ของคุณ:
Restart-Computer
กำหนดค่าบทบาท Remote Desktop Licensing และเพิ่มใบอนุญาต RDS (CALs)
ขั้นตอนต่อไปคือการกำหนดค่าบทบาท Remote Desktop Licensing ซึ่งให้การออกใบอนุญาตสำหรับการเชื่อมต่อ RDP ของผู้ใช้ คุณสามารถติดตั้งและเปิดใช้งาน Remote Desktop Licensing บนโฮสต์นี้ (หากคุณมีเพียงโฮสต์เดียวในเครือข่าย) หรือวางบทบาท RDLicensing บนเซิร์ฟเวอร์อื่น เซิร์ฟเวอร์หนึ่งที่มีบทบาท RDS Licensing สามารถออกใบอนุญาตให้กับโฮสต์ RDS จำนวนเท่าใดก็ได้
หากคุณตัดสินใจใช้เซิร์ฟเวอร์ RDLicensing ท้องถิ่น ให้เปิดใช้งานโฮสต์ RDS Licensing และติดตั้งใบอนุญาตไคลเอ็นต์ (RDS CALs) ตามคู่มือนี้
ใน Workgroup คุณควรใช้ Per Device RDS CALs หากเซิร์ฟเวอร์ออกใบอนุญาตออก Per User licenses เท่านั้น ผู้ใช้จะเห็นข้อผิดพลาดต่อไปนี้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน RDP:
Remote Desktop License Issue There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes.
กำหนดค่า Remote Desktop Session Host ใน Workgroup
ไปที่ Control Panel → System and Security → Administrative Tools → Remote Desktop Services → Remote Desktop Licensing Diagnoser โปรดทราบว่าเซิร์ฟเวอร์ของคุณยังไม่ได้กำหนดค่าเพื่อรับ RDS CALs จากเซิร์ฟเวอร์ออกใบอนุญาต ข้อความต่อไปนี้พิสูจน์สิ่งนี้:
- The licensing mode for the Remote Desktop Session Host server is not configured
- Number of licenses available for clients: 0
ข้อได้เปรียบหลักของ Remote Desktop Services บน Windows Server 2019 ใน Workgroup (ไม่มีโดเมน) คือ คุณไม่มีเครื่องมือการจัดการที่สะดวกสำหรับการจัดการบทบาท RDS คุณจะต้องกำหนดค่าการตั้งค่า RDSH ใดๆ ใน Local Group Policy Editor (gpedit.msc)
อย่างไรก็ตาม มีวิธีที่ไม่เป็นทางการในการคัดลอกคอนโซล mmc tsadmin.msc และ tsconfig.msc จาก Windows Server 2008 R2 ไปยัง Windows Server เวอร์ชันใหม่กว่า
กำหนดค่าการตั้งค่าการออกใบอนุญาต RDS ด้วย Local Group Policy Editor (gpedit.msc):
- ไปที่ Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Licensing
- เปลี่ยน Set the Remote Desktop licensing mode เป็น Per Device
- ในตัวเลือก Use the specified Remote Desktop license servers ให้ระบุที่อยู่ IP ของเซิร์ฟเวอร์ที่ติดตั้ง RDLicensing server หากเซิร์ฟเวอร์ออกใบอนุญาตติดตั้งในท้องถิ่น ให้ป้อน
localhostหรือ127.0.0.1 - อัปเดตการตั้งค่า Group Policy ท้องถิ่นและรัน Remote Desktop Licensing Diagnoser ตรวจสอบให้แน่ใจว่ามันเห็น RDS CALs ของคุณ
ใน Local GPO คุณยังสามารถตั้งค่าขีดจำกัดเซสชัน RDP (timeouts) และกฎการตัดการเชื่อมต่อผู้ใช้เมื่อไม่ได้ใช้งาน
หากคุณต้องการกำหนดค่า Group Policies ที่แตกต่างกันสำหรับผู้ใช้ท้องถิ่นและผู้ดูแลระบบ ให้ใช้ฟีเจอร์ multiple GPO (MLGPO)
จากนั้นสร้างบัญชีผู้ใช้ท้องถิ่นบนเซิร์ฟเวอร์ RDS ของคุณ คุณสามารถสร้างผู้ใช้ใน lusrmgr.msc หรือด้วย PowerShell:
$UserPassword = ConvertTo-SecureString "PaSS123!" -AsPlainText -Force
New-LocalUser a.brown -Password $UserPassword -FullName "Andi Brown"
ผู้ใช้สามารถเปลี่ยนรหัสผ่านในเซสชัน RDP เองได้
เพื่ออนุญาตให้ผู้ใช้เชื่อมต่อกับเซิร์ฟเวอร์ผ่าน Remote Desktop Services ให้เพิ่มบัญชีผู้ใช้เข้ากลุ่ม Remote Desktop Users ท้องถิ่น เพิ่มผู้ใช้ด้วยตนเองโดยใช้คอนโซลจัดการคอมพิวเตอร์หรือด้วย PowerShell:
Add-LocalGroupMember -Group "Remote Desktop Users" -Member a.brown
กลุ่มผู้ใช้นี้ได้รับอนุญาตให้ล็อกอินจากระยะไกลผ่านตัวเลือก GPO Allow logon through Remote Desktop Services (Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment) นโยบายเดียวกันอนุญาตการเข้าถึง RDP สำหรับผู้ใช้ที่ไม่ใช่แอดมินแม้แต่โดเมนคอนโทรลเลอร์
ตอนนี้ผู้ใช้สามารถลองเชื่อมต่อกับโฮสต์ RDS ของคุณโดยใช้ mstsc.exe (หรือไคลเอ็นต์ RDS อื่นๆ) จากคอมพิวเตอร์ของพวกเขา ตรวจสอบให้แน่ใจว่าผู้ใช้ที่ใช้งานอยู่มากกว่าสองคนสามารถเชื่อมต่อกับเซิร์ฟเวอร์พร้อมกันได้
ที่การล็อกอินครั้งแรก ใบอนุญาตชั่วคราวจะถูกออกให้อุปกรณ์ผู้ใช้ (คุณสมบัติการออกใบอนุญาต Per Device ของ RDS) ที่การล็อกอินครั้งที่สอง ใบอนุญาตถาวรจะถูกออกซึ่งปรากฏใน Remote Desktop Licensing Manager ใบอนุญาตถูกออกสำหรับช่วงเวลา 52-89 วัน (ตัวเลขสุ่ม)
หากไม่มีใบอนุญาต Per Device ว่าง คุณสามารถเพิกถอนใบอนุญาตสำหรับอุปกรณ์ผู้ใช้บางส่วนด้วยตนเอง ใช้คอนโซล RDSLicensing หรือสคริปต์ PowerShell นี้:
$licensepacks = Get-WmiObject win32_tslicensekeypack | where {($_.keypacktype -ne 0) -and ($_.keypacktype -ne 4) -and ($_.keypacktype -ne 6)}
# จำนวนใบอนุญาต per device ทั้งหมด
$licensepacks.TotalLicenses
# จำนวนใบอนุญาตที่ออกให้อุปกรณ์
$TSLicensesAssigned = gwmi win32_tsissuedlicense | where {$_.licensestatus -eq 2}
# ชื่อคอมพิวเตอร์ที่คุณต้องการเพิกถอนใบอนุญาต
$compname="wksmun2a15"
$RevokePC = $TSLicensesAssigned | ? sIssuedToComputer -EQ $compname
$RevokePC.Revoke()
หากคุณต้องการเชื่อมต่อกับเซสชัน RDP ของผู้ใช้ คุณสามารถใช้โหมด RDS shadow connection (มันก็ทำงานบน RDSH ใน Workgroup เช่นกัน)