Remote Desktop Protocol (RDP) support in Ubuntu has become considerably easier with the GNOME Remote Desktop stack included in modern Ubuntu Desktop releases. On Ubuntu 24.04 LTS, you can use the built-in GNOME Remote Desktop implementation to connect from Windows using Microsoft's native Remote Desktop Connection (mstsc), without installing xrdp.
This guide explains the complete setup, including:
Installing and verifying GNOME Remote Desktop
Enabling RDP
Configuring RDP credentials
Understanding Desktop Sharing vs Remote Login
Finding the Ubuntu IP address
Configuring UFW
Connecting from Windows
Testing port 3389
Troubleshooting common RDP errors
Diagnosing the "
Credentials are not set, denying client" errorUnderstanding
grdctlSecurity considerations
Headless-server considerations
The procedure is particularly useful for Ubuntu 24.04.4 LTS systems used as development servers, AI servers, lab machines, home servers, or workstations.
1. Ubuntu 24.04 Has Built-In RDP Support
Ubuntu Desktop 24.04 LTS uses GNOME Remote Desktop for its native remote desktop functionality.
The Ubuntu documentation describes two different remote-access modes:
Desktop Sharing
Desktop Sharing allows a remote computer to view and control the desktop session that is already running.
The important limitation is:
The user must already be logged into the graphical session.
This is useful when you want to remotely control the physical Ubuntu desktop.
Remote Login
Remote Login allows a user to log into the Ubuntu machine remotely.
This is generally the better option for a machine that is being used as a server or workstation that you want to access remotely without requiring somebody to already be logged into the graphical desktop.
Ubuntu documents these as separate features under:
Settings → System → Remote Desktop
Ubuntu 24.04: Share your desktop remotely
GNOME likewise documents Desktop Sharing and Remote Login as separate RDP functions.
2. What We Are Configuring
The basic architecture looks like this:
┌─────────────────────────────┐
│ Windows PC │
│ │
│ Remote Desktop Connection │
│ mstsc.exe │
└──────────────┬──────────────┘
│
│ RDP
│ TCP 3389
▼
┌─────────────────────────────┐
│ Ubuntu 24.04.4 LTS │
│ │
│ GNOME Remote Desktop │
│ gnome-remote-desktop │
│ │
│ GNOME Desktop │
└─────────────────────────────┘
For a typical local-network installation:
Windows
192.168.1.x
│
│ TCP 3389
▼
Ubuntu
192.168.1.y
3. Check Whether GNOME Remote Desktop Is Installed
Open a terminal on Ubuntu:
apt policy gnome-remote-desktop
If it is installed, you will see a version such as:
Installed: 46.3-0ubuntu1.2
If it is not installed:
sudo apt update
sudo apt install gnome-remote-desktop
Ubuntu 24.04's GNOME Remote Desktop package provides the gnome-remote-desktop service and the grdctl configuration utility.
4. Check the GNOME Remote Desktop Service
Run:
systemctl --user status gnome-remote-desktop
Initially, you may see:
Loaded: loaded (...)
Active: inactive (dead)
That does not necessarily mean the installation is broken.
The service is a per-user systemd service, so its state is associated with the graphical user session.
Start it with:
systemctl --user start gnome-remote-desktop
To enable it:
systemctl --user enable gnome-remote-desktop
Or enable and start it together:
systemctl --user enable --now gnome-remote-desktop
Verify:
systemctl --user status gnome-remote-desktop
A successful result should contain:
Active: active (running)
and typically:
RDP server started
5. Enable the RDP Backend
GNOME Remote Desktop provides the grdctl command-line utility.
Check its help:
grdctl --help
Enable RDP:
grdctl rdp enable
You can also check the overall status:
grdctl status
The Ubuntu grdctl documentation defines commands including:
rdp enable
rdp disable
rdp set-credentials USERNAME PASSWORD
rdp clear-credentials
6. The Most Important Step: Configure RDP Credentials
One of the easiest mistakes to make is assuming that your normal Ubuntu password is automatically the password used by GNOME Desktop Sharing.
It isn't necessarily.
Ubuntu's documentation explicitly states that the remote desktop username and password can be different from the normal system login credentials.
This distinction is extremely important.
Use:
grdctl rdp set-credentials USERNAME PASSWORD
For example:
grdctl rdp set-credentials shashwat 'YOUR_RDP_PASSWORD'
Replace YOUR_RDP_PASSWORD with a strong password.
Do not put your real password into documentation, screenshots, support tickets, or chat messages.
The command syntax is:
grdctl rdp set-credentials USERNAME PASSWORD
This is documented by Ubuntu's grdctl manual.
Why the command may fail
A common mistake is:
grdctl rdp set-credentials shashwat
This produces:
Wrong number of arguments for subcommand 'set-credentials'
The reason is that the command requires both:
USERNAME
PASSWORD
Therefore:
grdctl rdp set-credentials shashwat 'YourPassword'
is the correct form.
7. Restart GNOME Remote Desktop
After configuring the credentials:
systemctl --user restart gnome-remote-desktop
Check:
systemctl --user status gnome-remote-desktop --no-pager
You want:
Active: active (running)
8. Find the Ubuntu IP Address
Run:
hostname -I
For more precise IPv4 information:
ip -4 address
You may see:
192.168.1.12
That is the address Windows can use if both systems are on the same LAN.
Ubuntu's documentation also recommends using the machine's IPv4 address or hostname when connecting.
9. Verify That RDP Is Listening
RDP normally uses TCP port:
3389
Check:
ss -lntp | grep 3389
A listening socket indicates that something is accepting connections on that port.
You can also check more generally:
ss -lntp | grep -E '3389|3390'
This is useful because Ubuntu can use a second RDP port when both Desktop Sharing and Remote Login are enabled.
10. Configure the Ubuntu Firewall
Check UFW:
sudo ufw status
If it is inactive:
Status: inactive
then UFW is not blocking the connection.
If it is active, allow RDP.
For a simple setup:
sudo ufw allow 3389/tcp
sudo ufw reload
Ubuntu's current documentation gives the broader example:
sudo ufw allow 3389:3390/tcp
sudo ufw reload
because Desktop Sharing and Remote Login can use 3389 and 3390 depending on which modes are enabled.
Better security on a home LAN
Instead of allowing RDP from every network:
sudo ufw allow from 192.168.1.0/24 to any port 3389 proto tcp
Adjust the subnet to match your network.
For example:
192.168.1.0/24
means:
192.168.1.1 - 192.168.1.254
11. Connect From Windows
Windows already includes an RDP client.
Press:
Win + R
Then enter:
mstsc
Press Enter.
In Computer, enter the Ubuntu IP:
192.168.1.12
Then click:
Connect
Windows will request credentials.
Enter the RDP credentials configured using:
grdctl rdp set-credentials
For example:
Username: shashwat
Password: <your RDP password>
GNOME officially lists Microsoft's built-in mstsc client as a supported client.
12. Testing the Connection From Windows
If the Windows RDP client says:
This computer can't connect to the remote computer.
don't immediately reinstall anything.
First determine whether Windows can reach the Ubuntu RDP port.
Open PowerShell on Windows:
Test-NetConnection 192.168.1.12 -Port 3389
Replace the IP with your Ubuntu server's actual address.
A successful result contains:
TcpTestSucceeded : True
If you get:
TcpTestSucceeded : False
the problem is probably:
Wrong IP
Ubuntu firewall
Windows firewall/network isolation
Router/VLAN isolation
Wrong RDP port
GNOME RDP not listening
If TCP succeeds but authentication fails, investigate credentials and GNOME Remote Desktop configuration.
13. A Real-World Troubleshooting Example
One particularly useful diagnostic scenario occurs when the GNOME Remote Desktop service appears perfectly healthy:
● gnome-remote-desktop.service
Active: active (running)
and:
RDP server started
but Windows still reports:
This computer can't connect to the remote computer.
The service log may reveal:
[RDP] Credentials are not set, denying client
This message is extremely valuable.
It means:
The RDP server is running and receiving the connection, but authentication is being rejected because RDP credentials have not been configured.
The solution is:
grdctl rdp set-credentials shashwat 'YOUR_RDP_PASSWORD'
followed by:
systemctl --user restart gnome-remote-desktop
This is very different from a network connectivity problem.
14. How to Read the GNOME Remote Desktop Logs
Run:
journalctl --user -u gnome-remote-desktop -n 50 --no-pager
For live monitoring:
journalctl --user -u gnome-remote-desktop -f
Then attempt an RDP connection from Windows.
The log will often immediately tell you what is happening.
For example:
RDP server started
RDP server started
Generally indicates that the daemon successfully started its RDP listener.
Credentials missing
[RDP] Credentials are not set, denying client
Configure:
grdctl rdp set-credentials USERNAME PASSWORD
Service inactive
Active: inactive (dead)
Start it:
systemctl --user enable --now gnome-remote-desktop
15. Desktop Sharing vs Remote Login
This distinction deserves special attention.
Desktop Sharing
Desktop Sharing is intended for controlling an existing graphical session.
Ubuntu's documentation states that you must be logged into the graphical session before another computer can connect using Desktop Sharing.
Typical use:
Physical Ubuntu desktop
↓
User logs in
↓
Desktop Sharing enabled
↓
Windows connects
↓
Same desktop session is controlled
This is useful for:
Remote assistance
Accessing your workstation
Controlling applications already running
Remote administration while somebody is logged in
16. Remote Login Is Better for a Headless Machine
Remote Login is different.
With Remote Login, you can remotely log into your Ubuntu account rather than simply taking control of an already-running desktop session.
Ubuntu documents this under:
Settings → System → Remote Desktop → Remote Login
This is generally the better configuration for:
Home servers
AI servers
Development servers
Lab machines
Machines without a monitor
Machines that are rebooted remotely
Systems that nobody needs to log into physically
Ubuntu's documentation notes that with Remote Login the user can log into their account remotely, while Desktop Sharing is intended for the already-running desktop session.
17. Understanding Ports 3389 and 3390
A common source of confusion is the RDP port.
Normally:
RDP → TCP 3389
However, Ubuntu's GNOME implementation can use another port when both Remote Login and Desktop Sharing are enabled.
Ubuntu documents this behavior:
Remote Login → 3389
Desktop Sharing → 3390
when both are enabled.
Therefore, if Windows cannot connect to:
192.168.1.12
check the port being advertised by Ubuntu.
You can also test:
Test-NetConnection 192.168.1.12 -Port 3390
if Desktop Sharing is configured on 3390.
In Windows Remote Desktop, specify a non-default port as:
192.168.1.12:3390
18. Checking the Configuration From the Ubuntu GUI
The graphical configuration is available under:
Settings
↓
System
↓
Remote Desktop
Depending on your configuration, you'll see options such as:
Desktop Sharing
Remote Control
Remote Login
Desktop Sharing
Enable:
Desktop Sharing
and, if you want to control the machine:
Remote Control
Remote Login
Enable:
Remote Login
for a login-oriented/headless workflow.
Ubuntu's documentation confirms that both are configured from the Remote Desktop settings panel.
19. Useful grdctl Commands
grdctl is the command-line administration tool for GNOME Remote Desktop.
Show general status
grdctl status
Enable RDP
grdctl rdp enable
Disable RDP
grdctl rdp disable
Set credentials
grdctl rdp set-credentials USERNAME PASSWORD
Clear credentials
grdctl rdp clear-credentials
Display help
grdctl --help
The exact command set can vary between GNOME Remote Desktop releases, so it is a good practice to check:
grdctl --help
grdctl rdp --help
rather than assuming that a command from another Ubuntu/GNOME version exists.
Ubuntu's grdctl manpage documents status, rdp enable, rdp disable, credential configuration, and other RDP controls.
20. Why grdctl rdp status May Not Work
A common mistake is trying:
grdctl rdp status
and receiving:
Unknown subcommand 'status'
This is not necessarily an installation problem.
The status command is a general grdctl command:
grdctl status
rather than:
grdctl rdp status
This distinction matters because grdctl has a hierarchy:
grdctl
├── status
└── rdp
├── enable
├── disable
├── set-credentials
└── ...
The exact command availability depends on the installed version.
21. Complete Command-Line Setup
For a typical Ubuntu Desktop 24.04 system where the user is already logged into GNOME, the basic configuration is:
sudo apt update
sudo apt install gnome-remote-desktop
Enable RDP:
grdctl rdp enable
Configure credentials:
grdctl rdp set-credentials shashwat 'YOUR_RDP_PASSWORD'
Enable and start the service:
systemctl --user enable --now gnome-remote-desktop
Check:
systemctl --user status gnome-remote-desktop --no-pager
Check general configuration:
grdctl status
Find the IP:
hostname -I
Check RDP:
ss -lntp | grep 3389
Check firewall:
sudo ufw status
If necessary:
sudo ufw allow 3389/tcp
sudo ufw reload
Then connect from Windows:
mstsc
and enter:
Ubuntu-IP
22. Recommended Diagnostic Sequence
If RDP doesn't work, don't randomly reinstall packages.
Use this sequence.
Step 1 — Check the service
systemctl --user status gnome-remote-desktop --no-pager
Step 2 — Check the RDP configuration
grdctl status
Step 3 — Check the IP
hostname -I
Step 4 — Check listening ports
ss -lntp | grep -E '3389|3390'
Step 5 — Check firewall
sudo ufw status
Step 6 — Test from Windows
Test-NetConnection UBUNTU_IP -Port 3389
Step 7 — Check logs
journalctl --user -u gnome-remote-desktop -n 50 --no-pager
Step 8 — Monitor while connecting
journalctl --user -u gnome-remote-desktop -f
This approach separates:
Network problem
↓
Port problem
↓
Service problem
↓
Authentication problem
↓
Desktop-session problem
That makes troubleshooting much faster.
23. Common Problems and Solutions
| Problem | Likely Cause | Solution |
|---|---|---|
| Service inactive | GNOME RDP daemon not running | systemctl --user enable --now gnome-remote-desktop |
| RDP server started but connection rejected | Credentials missing | grdctl rdp set-credentials USER PASSWORD |
| Windows cannot reach port | Firewall/network | Check UFW and Test-NetConnection |
| 3389 doesn't work | Different RDP mode/port | Check Desktop Sharing/Remote Login |
| Desktop Sharing doesn't work after reboot | Nobody logged into GNOME | Use Remote Login |
| Wrong screen resolution | Desktop Sharing uses existing session resolution | Use Remote Login for client-sized session |
grdctl rdp status fails | Unsupported command | Use grdctl status and grdctl --help |
| Hostname doesn't resolve | Local DNS/mDNS issue | Use the Ubuntu IP address |
| Works locally but not remotely | Router/NAT/VPN issue | Use a VPN rather than exposing RDP |
Ubuntu's documentation specifically recommends checking credentials, hostname/IP, port, server state, graphical login state for Desktop Sharing, and firewall configuration when troubleshooting.
24. Security: Do Not Expose RDP Directly to the Internet
This is one of the most important parts of the setup.
Avoid creating a router rule such as:
Internet
↓
TCP 3389
↓
Ubuntu server
unless you fully understand the security implications and have additional controls in place.
Ubuntu explicitly warns that port forwarding exposes the system to the world and creates a security risk. Its documentation recommends using a VPN when remote access is intended for a private group.
For remote access from outside your home network, a safer architecture is:
Laptop
│
│ Encrypted VPN
▼
Home Network
│
▼
Ubuntu
│
│ RDP
▼
GNOME Desktop
Examples of VPN approaches include:
WireGuard
Tailscale
A corporate VPN
Site-to-site VPN
The general principle is:
Keep RDP private; expose the VPN, not RDP.
25. RDP vs SSH
RDP and SSH serve different purposes.
SSH
Best for:
Server administration
Running commands
File transfers
Automation
Scripts
System maintenance
Example:
ssh shashwat@192.168.1.12
RDP
Best for:
Full graphical desktop
GUI applications
Browsers
Development environments
Desktop administration
Applications requiring a graphical interface
A useful server configuration is therefore:
SSH → command-line administration
RDP → graphical administration
26. RDP vs xrdp
Many older Ubuntu tutorials recommend installing:
sudo apt install xrdp
For Ubuntu 24.04 GNOME Desktop, that should not automatically be your first choice.
Ubuntu 24.04's native GNOME Remote Desktop stack already provides RDP functionality, and Ubuntu documents it as the native approach for current Ubuntu Desktop releases.
Using the built-in GNOME implementation avoids introducing another RDP server unless you have a specific reason to use xrdp.
xrdp can still be useful in particular environments, but it should be treated as an alternative architecture rather than a prerequisite for Ubuntu 24.04 GNOME RDP.
27. Desktop Sharing Resolution vs Remote Login Resolution
There is another practical difference between the two modes.
With Desktop Sharing, the remote client is essentially viewing the existing graphical session, so its resolution is determined by the server's user session. Ubuntu notes that this can result in a screen that appears too small, too large, or blurry.
With Remote Login, the remote session's resolution is determined by the client window, so the session can better match the remote display.
For a laptop connecting to a server, Remote Login can therefore provide a much better experience.
28. Recommended Configuration for a Home AI/Development Server
For a machine such as an Ubuntu AI/development server, I would generally structure remote access like this:
┌───────────────────┐
│ Windows Workstation│
└─────────┬─────────┘
│
VPN / LAN
│
┌─────────▼─────────┐
│ Ubuntu 24.04 LTS │
│ │
│ ┌───────────────┐ │
│ │ SSH │ │
│ │ Administration│ │
│ └───────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ GNOME RDP │ │
│ │ GUI Access │ │
│ └───────────────┘ │
└───────────────────┘
For LAN-only access:
Windows → Ubuntu:3389
For remote access:
Windows → VPN → Ubuntu:3389
Avoid:
Windows → Internet → Ubuntu:3389
29. Quick Reference
Install
sudo apt update
sudo apt install gnome-remote-desktop
Enable RDP
grdctl rdp enable
Configure credentials
grdctl rdp set-credentials USERNAME PASSWORD
Start service
systemctl --user enable --now gnome-remote-desktop
Check service
systemctl --user status gnome-remote-desktop
Check configuration
grdctl status
Find IP
hostname -I
Check RDP port
ss -lntp | grep 3389
Check firewall
sudo ufw status
Allow RDP
sudo ufw allow 3389/tcp
sudo ufw reload
Test from Windows
Test-NetConnection UBUNTU_IP -Port 3389
Monitor logs
journalctl --user -u gnome-remote-desktop -f
30. Final Checklist
Before attempting a Windows RDP connection, verify:
Ubuntu Desktop 24.04 LTS is installed
gnome-remote-desktopis installedRDP backend is enabled
RDP credentials are configured
gnome-remote-desktopis runningUbuntu has a reachable IP address
TCP 3389 is listening, or the configured RDP port is known
UFW permits the appropriate RDP port
Windows can reach the Ubuntu IP
Windows
mstscis pointed at the correct IP and portCorrect RDP username/password are being used
Desktop Sharing has a logged-in graphical session
Remote Login is used when a headless/login-oriented workflow is required
RDP is not unnecessarily exposed directly to the Internet
Conclusion
Ubuntu 24.04.4 LTS provides a capable native RDP solution through GNOME Remote Desktop, making it possible to connect from Windows using the built-in Remote Desktop Connection client without installing xrdp.
The most important concepts are:
GNOME Remote Desktop
+
RDP enabled
+
RDP credentials configured
+
Correct IP/port
+
Firewall allowing RDP
=
Working Windows → Ubuntu Remote Desktop
The most easily overlooked component is RDP authentication credentials. A running service does not necessarily mean that clients can authenticate. If the journal reports:
[RDP] Credentials are not set, denying client
the correct fix is to configure credentials with:
grdctl rdp set-credentials USERNAME PASSWORD
For ordinary desktop sharing, ensure the graphical user session is already active. For a server that should be accessible after reboot without somebody sitting at the physical console, Remote Login is generally the more appropriate GNOME feature.
For local-network administration, this gives Ubuntu a very convenient combination:
SSH → CLI/server administration
RDP → full graphical administration
VPN → secure remote access from outside the LAN
That combination is particularly effective for Ubuntu development, virtualization, AI, Docker, Kubernetes, and home-lab servers.
Official References
Ubuntu 24.04 RDP, Ubuntu Remote Desktop, Ubuntu 24.04.4 LTS Remote Desktop, GNOME Remote Desktop, Ubuntu RDP Windows, Windows to Ubuntu RDP, mstsc Ubuntu, grdctl, Ubuntu Desktop Sharing, Ubuntu Remote Login, Linux Remote Desktop, Ubuntu RDP troubleshooting, Ubuntu 24.04 remote access, GNOME RDP, Ubuntu server GUI access
No comments:
Post a Comment
Thank you for Commenting Will reply soon ......