RDP ต่อไม่ติด: ไล่แก้ Remote Desktop บน Windows Server

RDP ต่อไม่ติดบน Windows Server ไล่ตรวจตามข้อความ error ตั้งแต่พอร์ต 3389, Security Group, ไฟร์วอลล์, บริการ, บัญชีผู้ใช้ จนถึงไลเซนส์ RDS ที่หมดช่วงผ่อนผัน

โดย ทีมงาน THAI DATA CLOUD อ่าน 15 นาที

แชร์FacebookXLINELinkedIn
RDP — RDP ต่อไม่ติด: ไล่แก้ Remote Desktop บน Windows Server
RDP ต่อไม่ติด: ไล่แก้ Remote Desktop บน Windows Server

คำตอบสั้น ๆ: RDP ต่อไม่ติดบน Windows Server ไล่ตรวจตามข้อความ error ตั้งแต่พอร์ต 3389, Security Group, ไฟร์วอลล์, บริการ, บัญชีผู้ใช้ จนถึงไลเซนส์ RDS ที่หมดช่วงผ่อนผัน

คู่มือนี้อธิบาย RDP ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

RDP (Remote Desktop Protocol) คือช่องทางหลักที่ผู้ดูแลใช้เข้าไปทำงานบน Windows Server ที่อยู่บนคลาวด์ เมื่อ RDP ต่อไม่ติด งานทุกอย่างบนเครื่องก็หยุดตาม สาเหตุส่วนใหญ่ไม่ได้อยู่ที่ตัว Windows แต่อยู่ระหว่างทาง เช่น Security Group ของคลาวด์ ไฟร์วอลล์ในเครื่อง พอร์ตที่ถูกเปลี่ยนไว้ หรือบัญชีผู้ใช้ที่ไม่มีสิทธิ์เข้าผ่าน Remote Desktop

คู่มือนี้เหมาะกับผู้ดูแล Windows Server 2016, 2019, 2022 และ 2025 ที่เจอข้อความ error ตอนเชื่อมต่อด้วย Remote Desktop Connection (mstsc) หรือ Windows App เมื่อทำตามลำดับ คุณจะรู้ว่าปัญหาอยู่ชั้นไหน แก้ได้ตรงจุด และมีทางเข้าสำรองผ่าน Console โดยไม่ต้องเดาสุ่มหรือรีบูตเครื่องซ้ำหลายรอบ

สิ่งที่ต้องเตรียม

  • IP สาธารณะของเซิร์ฟเวอร์และพอร์ต RDP ที่ใช้อยู่ ค่าเริ่มต้นคือ TCP 3389 ถ้าเคยเปลี่ยนพอร์ตไว้ ให้หาเลขพอร์ตจริงจากเอกสารของทีมก่อน
  • บัญชี TDC Enterprise ที่มีสิทธิ์จัดการเครื่อง เพื่อแก้ Security Group และเปิด Console ผ่านเว็บ
  • ชื่อผู้ใช้และรหัสผ่าน Windows ที่ถูกต้อง ถ้าเครื่อง join domain ให้รู้ชื่อโดเมนด้วย เช่น CORP\somchai
  • IP สาธารณะของออฟฟิศหรือเครื่องที่ใช้เชื่อมต่อ ดูได้จากเว็บตรวจ IP หรือถามผู้ดูแลเครือข่าย
  • เครื่องลูกข่าย Windows ที่เปิด PowerShell ได้ สำหรับทดสอบพอร์ต (บน macOS ใช้คำสั่ง nc -vz แทน)
ลำดับการไล่ตรวจ RDP ที่ต่อไม่ติด เริ่มจากอ่านข้อความ error ทดสอบพอร์ต ตรวจ Security Group ไฟร์วอลล์ในเครื่อง บริการ และบัญชีผู้ใช้
ไล่จากชั้นเครือข่ายเข้าไปหาตัวเครื่อง จะไม่เสียเวลาแก้ผิดชั้น

ขั้นตอนที่ 1: อ่านข้อความ error ของ RDP ก่อนลงมือแก้

อย่าเพิ่งรีบูตเครื่องหรือแก้ค่าใด ๆ ให้จดข้อความที่ Remote Desktop Connection แสดงให้ครบทุกคำ เพราะแต่ละข้อความชี้ไปคนละชั้นของปัญหา ข้อความที่เจอบ่อยบน Windows Server มีดังนี้

  • Remote Desktop can't connect to the remote computer for one of these reasons พร้อม Error code 0x204 แปลว่าเครื่องลูกข่ายเปิดการเชื่อมต่อไปที่พอร์ตปลายทางไม่สำเร็จ ปัญหาอยู่ที่เครือข่าย ไฟร์วอลล์ หรือบริการ ไปทำขั้นตอนที่ 2 ถึง 5
  • Your credentials did not work แปลว่าเชื่อมต่อถึงเครื่องแล้ว แต่ชื่อผู้ใช้หรือรหัสผ่านไม่ถูก ตรวจรูปแบบชื่อบัญชีในขั้นตอนที่ 6
  • To sign in remotely, you need the right to sign in through Remote Desktop Services แปลว่ารหัสผ่านถูก แต่บัญชีนี้ไม่มีสิทธิ์เข้าผ่าน Remote Desktop
  • This could be due to CredSSP encryption oracle remediation เป็นปัญหาอัปเดตความปลอดภัยของสองฝั่งไม่ตรงกัน แก้ตามคู่มือแก้ CredSSP Error
  • The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license เกิดกับเครื่องที่ติดตั้งบทบาท RD Session Host และหมดช่วงผ่อนผันแล้ว ไปขั้นตอนที่ 7
ตารางจับคู่ข้อความ error ของ RDP บน Windows Server กับสาเหตุที่พบบ่อยและขั้นตอนที่ต้องไปตรวจ
จดข้อความ error ให้ครบก่อนแก้ แต่ละข้อความชี้ไปคนละชั้นของปัญหา

ข้อสังเกตสำคัญคือ ถ้าระบบถามรหัสผ่านแล้วตอบกลับมาว่ารหัสไม่ถูก แปลว่าเครือข่ายและพอร์ตใช้งานได้แล้ว ไม่ต้องไปแก้ Security Group หรือไฟร์วอลล์ให้เสียเวลา

ขั้นตอนที่ 2: ทดสอบว่าพอร์ต RDP ไปถึงเครื่องหรือไม่

บนเครื่องลูกข่าย Windows เปิด PowerShell แล้วทดสอบการเชื่อมต่อ TCP ไปที่ IP และพอร์ตของเซิร์ฟเวอร์ ถ้าเปลี่ยนพอร์ตไว้ ให้ใส่เลขพอร์ตจริงแทน 3389

Test-NetConnection 203.0.113.10 -Port 3389

ดูบรรทัด TcpTestSucceeded เป็นหลัก ถ้าเป็น True แปลว่าเครือข่ายเปิดถึงบริการ RDP แล้ว ให้ข้ามไปขั้นตอนที่ 5 และ 6 ถ้าเป็น False ปัญหาอยู่ระหว่างทาง ให้ทำขั้นตอนที่ 3 และ 4 ต่อ อย่าตัดสินจากผล Ping เพราะเซิร์ฟเวอร์จำนวนมากปิด ICMP ไว้ Ping จึงล้มเหลวได้ทั้งที่ RDP ใช้งานได้ปกติ

ผลคำสั่ง Test-NetConnection ทดสอบพอร์ต RDP 3389 ที่ไม่ผ่าน ค่า TcpTestSucceeded เป็น False แปลว่าแพ็กเก็ตไปไม่ถึงเครื่อง
TcpTestSucceeded เป็น False แปลว่าติดที่เครือข่าย ไม่ใช่ที่รหัสผ่านหรือบัญชี

บน macOS หรือ Linux ใช้คำสั่งนี้แทน ถ้าเห็นคำว่า succeeded แปลว่าพอร์ตเปิดถึงเครื่อง

nc -vz 203.0.113.10 3389

ถ้าผลเป็น False ให้ลองทดสอบซ้ำจากเครือข่ายอื่น เช่น แชร์อินเทอร์เน็ตจากมือถือ ถ้าจากมือถือผ่านแต่จากออฟฟิศไม่ผ่าน ปัญหาอาจอยู่ที่ไฟร์วอลล์ขาออกของออฟฟิศ หรือ IP ของออฟฟิศไม่ตรงกับที่อนุญาตไว้ในกฎของคลาวด์

ขั้นตอนที่ 3: ตรวจ Security Group บน TDC Enterprise

Security Group คือไฟร์วอลล์ชั้นคลาวด์ที่กรองทราฟฟิกก่อนถึงเครื่อง ถ้ากฎไม่อนุญาต การเชื่อมต่อ RDP จะค้างจนหมดเวลาโดยไม่มีข้อความอื่น ที่พอร์ทัล TDC Enterprise ไปที่เมนู Network > Firewall Security เปิดกลุ่มที่ผูกกับเซิร์ฟเวอร์ แล้วตรวจแท็บ Inbound Rules ว่ามีกฎลักษณะนี้

  • Action เป็น Allow และ Protocol เป็น TCP
  • Port (or range) เป็น RDP(3389) หรือ Custom ที่ตรงกับพอร์ตที่เปลี่ยนไว้
  • Source เป็น IP ของออฟฟิศแบบ /32 เช่น 198.51.100.25/32

สามสาเหตุที่เจอบ่อยที่สุดคือ IP ของออฟฟิศเปลี่ยนเพราะใช้อินเทอร์เน็ตแบบ IP ไม่คงที่ เปลี่ยนพอร์ต RDP ในเครื่องแล้วแต่กฎยังเปิด 3389 อยู่ และสร้างกลุ่มกฎไว้แต่ยังไม่ได้ผูกกับเซิร์ฟเวอร์ ดูวิธีสร้างและผูกกฎได้ในคู่มือ Security Group บน TDC Enterprise หลังแก้กฎ ให้กลับไปทดสอบด้วย Test-NetConnection อีกครั้ง

ระหว่างไล่ปัญหา อาจเปิด Source เป็น 0.0.0.0/0 ชั่วคราวเพื่อแยกว่าปัญหาอยู่ที่ IP ต้นทางหรือไม่ ถ้าทำแบบนี้ ให้จำกัดกลับทันทีที่รู้สาเหตุ เพราะบอตบนอินเทอร์เน็ตจะเริ่มเดารหัสผ่าน RDP ภายในเวลาไม่นาน

ขั้นตอนที่ 4: เข้าเครื่องทาง Console แล้วตรวจการเปิด RDP และ Windows Firewall

เมื่อ RDP ใช้ไม่ได้ ทางเข้าสำรองคือ Console ของแพลตฟอร์ม ซึ่งเหมือนการนั่งหน้าจอเครื่องจริงและไม่ผ่านเครือข่ายของ Windows ดูวิธีเปิดได้ในคู่มือ Remote เข้า Console Server ผ่าน Web UI เมื่อล็อกอินได้ ให้เปิด PowerShell แบบ Run as administrator แล้วตรวจว่า Remote Desktop ถูกเปิดอยู่

Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections

ค่า fDenyTSConnections เป็น 0 แปลว่าเปิด RDP อยู่ ถ้าเป็น 1 ให้เปิดด้วยคำสั่งด้านล่าง หรือผ่าน Server Manager > Local Server > Remote Desktop

Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Format-Table DisplayName, Enabled, Profile
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

กฎในกลุ่ม Remote Desktop ที่ Windows สร้างไว้ให้ครอบคลุมพอร์ต 3389 เท่านั้น ถ้าเปลี่ยนพอร์ต RDP เป็นเลขอื่น ต้องสร้างกฎสำหรับพอร์ตใหม่เอง และควรจำกัด IP ต้นทางไปพร้อมกัน

New-NetFirewallRule -DisplayName "RDP 3390 from office" -Direction Inbound -Protocol TCP -LocalPort 3390 -RemoteAddress 198.51.100.25 -Action Allow

ถ้าตั้ง fDenyTSConnections เป็น 0 แล้วค่ากลับไปเป็น 1 เอง แปลว่ามี Group Policy บังคับปิดอยู่ ตรวจด้วย gpresult /H C:\gpresult.html แล้วหานโยบาย Allow users to connect remotely by using Remote Desktop Services ใต้ Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections ช่อง Winning GPO จะบอกว่านโยบายไหนเป็นตัวปิด

ขั้นตอนที่ 5: ตรวจบริการ Remote Desktop Services และพอร์ตที่ฟังอยู่

ถ้าเครือข่ายเปิดถึงแล้วแต่ยังต่อไม่ได้ ให้ตรวจว่าบริการทำงานและฟังอยู่ที่พอร์ตที่คิดไว้จริง

Get-Service TermService, UmRdpService
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
netstat -ano | findstr LISTENING | findstr :3389
qwinsta
  • TermService (Remote Desktop Services) และ UmRdpService ต้องเป็น Running ถ้าหยุดอยู่ ให้สั่ง Start-Service TermService
  • PortNumber คือพอร์ตที่ RDP ฟังอยู่จริง ถ้าไม่ตรงกับที่ใช้เชื่อมต่อ ให้แก้ที่ฝั่งเครื่องลูกข่ายด้วยการใส่ 203.0.113.10:3390 ในช่อง Computer
  • netstat ต้องเห็นพอร์ตในสถานะ LISTENING ถ้าเห็นแต่ PID ไม่ใช่ของ TermService ให้ดูว่าเป็นโปรแกรมอะไรด้วย tasklist /svc /fi "PID eq 1234" แล้วย้ายโปรแกรมนั้นไปใช้พอร์ตอื่น
  • qwinsta ต้องมีแถว rdp-tcp สถานะ Listen ถ้าไม่มี แปลว่า listener ของ RDP ไม่ทำงาน

ถ้า listener หายไป ให้ลอง Restart-Service TermService -Force คำสั่งนี้ตัด session RDP ที่ค้างอยู่ทั้งหมด จึงควรทำจาก Console และแจ้งผู้ใช้ก่อน ถ้ารีสตาร์ตแล้วยังไม่มี listener ให้ตรวจใบรับรอง self-signed ของ RDP และสิทธิ์โฟลเดอร์ MachineKeys ตามเอกสาร General Remote Desktop connection troubleshooting ของ Microsoft

ขั้นตอนที่ 6: แก้ปัญหาบัญชีผู้ใช้ NLA และจำนวน session

รูปแบบชื่อบัญชีและสิทธิ์เข้า RDP

ถ้าขึ้น Your credentials did not work ให้ตรวจรูปแบบชื่อก่อน บัญชีในเครื่องใช้ .\administrator หรือ web-01\administrator ส่วนบัญชีโดเมนใช้ CORP\somchai หรือ [email protected] mstsc จำชื่อผู้ใช้ครั้งก่อนไว้ ถ้าเคยพิมพ์ผิด ให้กด More choices > Use a different account

ถ้าขึ้นว่าต้องมีสิทธิ์ sign in through Remote Desktop Services ให้เพิ่มผู้ใช้เข้ากลุ่ม Remote Desktop Users จาก Console

Add-LocalGroupMember -Group "Remote Desktop Users" -Member "somchai"
Get-LocalGroupMember -Group "Remote Desktop Users"

บัญชีถูกล็อกหรือรหัสผ่านหมดอายุ

บัญชีที่ใส่รหัสผิดเกินเกณฑ์ Account Lockout จะเข้าไม่ได้จนกว่าจะพ้นเวลาที่ตั้งไว้ ปลดล็อกบัญชีในเครื่องได้ที่ Computer Management > Local Users and Groups > Users เปิดบัญชีแล้วเอาเครื่องหมายออกจาก Account is locked out ถ้าบัญชีถูกล็อกซ้ำเรื่อย ๆ ทั้งที่ไม่มีใครพิมพ์ผิด แปลว่ามีคนภายนอกกำลังเดารหัสผ่าน ให้จำกัด IP ที่ Security Group ก่อนปลดล็อก

ถ้ารหัสผ่านหมดอายุหรือบัญชีถูกตั้งให้ต้องเปลี่ยนรหัสในการล็อกอินครั้งถัดไป ขณะที่เปิด Network Level Authentication (NLA) อยู่ การเชื่อมต่อมักล้มเหลวด้วยข้อความ authentication error ให้เปลี่ยนรหัสผ่านจาก Console ก่อน แล้วค่อยเชื่อมต่อใหม่ ไม่ควรปิด NLA เพื่อแก้ปัญหานี้ เพราะ NLA บังคับให้ยืนยันตัวตนก่อนสร้าง session ซึ่งช่วยลดภาระและความเสี่ยงจากการโจมตี RDP

session เต็ม

Windows Server ที่ไม่ได้ติดตั้ง RD Session Host ให้เข้าพร้อมกันได้ 2 session สำหรับงานดูแลระบบ ถ้ามีคนค้าง session ไว้ ให้ดูและสั่งออกจาก Console

quser
logoff 3

เลข 3 คือค่าในคอลัมน์ ID ของ session ที่ต้องการปิด งานที่ยังไม่ได้บันทึกใน session นั้นจะหาย จึงควรถามเจ้าของ session ก่อน

ขั้นตอนที่ 7: แก้ RDP เมื่อขึ้นว่าไม่มี Remote Desktop License Server

เครื่องที่ติดตั้งบทบาท RD Session Host เพื่อให้หลายคนใช้งานพร้อมกัน จะทำงานได้ในช่วงผ่อนผัน 120 วัน เมื่อหมดช่วงและยังไม่มี License Server ที่มี RDS CAL ผู้ใช้ทั่วไปจะเข้าไม่ได้ ผู้ดูแลยังเข้าเพื่อแก้ไขได้ด้วยโหมด admin

mstsc /admin /v:203.0.113.10

ตรวจจำนวนวันผ่อนผันที่เหลือได้ด้วยคำสั่งนี้ ถ้า DaysLeft เป็น 0 แปลว่าหมดแล้ว

Get-CimInstance -Namespace root/cimv2/TerminalServices -ClassName Win32_TerminalServiceSetting | Invoke-CimMethod -MethodName GetGracePeriodDays

ทางแก้มีสองทาง ถ้าต้องการให้พนักงานหลายคนใช้งานพร้อมกันจริง ให้ติดตั้ง License Server และ CAL ตามคู่มือ RDS Licensing ถ้าติดตั้งบทบาทนี้ไว้โดยไม่ได้ตั้งใจและใช้แค่งานดูแลระบบ ให้ถอดบทบาทออกแล้วรีบูต เครื่องจะกลับไปใช้ 2 session สำหรับผู้ดูแลแบบเดิม

Uninstall-WindowsFeature RDS-RD-Server
Restart-Computer

ก่อนถอดบทบาท ให้แน่ใจว่าไม่มีโปรแกรมที่ผู้ใช้หลายคนต้องเข้าใช้งานผ่านเครื่องนี้ และทำ snapshot หรือสำรองข้อมูลไว้ก่อน

ตรวจสอบหลังแก้ RDP เสร็จ

เมื่อเชื่อมต่อได้แล้ว ให้ย้อนดูว่าระหว่างแก้ปัญหาได้เปิดอะไรไว้กว้างเกินไปหรือไม่ เช่น กฎ Security Group ที่ Source เป็น 0.0.0.0/0 หรือกฎ Windows Firewall ที่ไม่ได้จำกัด RemoteAddress แล้วเก็บประวัติการล็อกอินไว้ตรวจย้อนหลังด้วย Event Viewer ใน Security log เหตุการณ์ 4625 คือการล็อกอินล้มเหลว ถ้าเห็นจาก IP แปลกจำนวนมาก แปลว่าพอร์ต RDP ยังเปิดกว้างเกินไป

รายการตรวจหลังแก้ RDP ให้เชื่อมต่อได้ ทั้งกฎ Security Group ไฟร์วอลล์ บริการ TermService NLA และช่องทาง Console สำรอง
เชื่อมต่อได้แล้วยังไม่จบ ต้องปิดช่องที่เปิดกว้างไว้ระหว่างแก้ด้วย

ปัญหาที่พบบ่อยเกี่ยวกับ RDP

ต่อ RDP ได้แต่หน้าจอดำค้าง ต้องแก้อย่างไร?

รอ 1 ถึง 2 นาทีก่อน เพราะเครื่องอาจกำลังโหลดโปรไฟล์หรือติดตั้งอัปเดตค้างอยู่ ตรวจจาก Console ว่ามีหน้าจอ Working on updates หรือไม่ ถ้าไม่มี ให้ตัดการเชื่อมต่อแล้วเปิด mstsc ใหม่ ไปที่ Show Options > Experience แล้วเอาเครื่องหมายออกจาก Persistent bitmap caching ก่อนเชื่อมต่ออีกครั้ง

เปลี่ยนพอร์ต RDP แล้วเชื่อมต่อไม่ได้เลย ต้องแก้ตรงไหน?

พอร์ตใหม่ต้องถูกอนุญาตทั้งใน Security Group และ Windows Firewall และต้องระบุพอร์ตตอนเชื่อมต่อในรูปแบบ IP:พอร์ต ถ้าเข้าไม่ได้เลย ให้เข้าทาง Console ตรวจค่า PortNumber ตามขั้นตอนที่ 5 แล้วเพิ่มกฎไฟร์วอลล์ให้พอร์ตนั้นตามขั้นตอนที่ 4

ต่อจากเน็ตมือถือได้ แต่จากออฟฟิศต่อไม่ได้ เกิดจากอะไร?

มักเกิดจากสองเรื่อง ไฟร์วอลล์ของออฟฟิศบล็อกการออกไปยังพอร์ต RDP โดยเฉพาะพอร์ตที่ไม่ใช่มาตรฐาน หรือออฟฟิศมีอินเทอร์เน็ตหลายสายทำให้ IP ขาออกไม่ตรงกับที่ใส่ไว้ใน Security Group ให้ตรวจ IP ขาออกจริงจากเครื่องที่ใช้งาน แล้วเพิ่มให้ครบทุกสาย

ควรเปิด RDP ให้ทุก IP เข้าได้เพื่อความสะดวกหรือไม่?

ไม่ควร พอร์ต RDP ที่เปิดให้ทุก IP จะถูกสแกนและเดารหัสผ่านตลอดเวลา ควรจำกัดเฉพาะ IP ของออฟฟิศ ถ้าทีมทำงานจากหลายที่ ให้ใช้ VPN หรือ RD Gateway ที่รับการเชื่อมต่อผ่าน HTTPS พอร์ต 443 แทนการเปิดพอร์ต 3389 ออกสู่อินเทอร์เน็ต

ถ้าไล่ครบทุกขั้นแล้วยังเข้า RDP ไม่ได้ หรืออยากให้ช่วยวางระบบเข้าถึงเซิร์ฟเวอร์ที่ปลอดภัยกว่าเดิม ติดต่อทีมงาน THAI DATA CLOUD ได้ ทีมงานช่วยตรวจเครื่องที่ใช้บริการ Cloud Windows Server ร่วมกับคุณได้

อ่านเพิ่มเติมเกี่ยวกับ RDP

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน