คำตอบสั้น ๆ: 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แทน)
ขั้นตอนที่ 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
ข้อสังเกตสำคัญคือ ถ้าระบบถามรหัสผ่านแล้วตอบกลับมาว่ารหัสไม่ถูก แปลว่าเครือข่ายและพอร์ตใช้งานได้แล้ว ไม่ต้องไปแก้ 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 ใช้งานได้ปกติ
บน 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 จะบอกว่านโยบายไหนเป็นตัวปิด