WebHosting

Saturday, August 15, 2026

How to Enable and Configure Remote Desktop (RDP) on Ubuntu 24.04.4 LTS

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" error

  • Understanding grdctl

  • Security 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

ProblemLikely CauseSolution
Service inactiveGNOME RDP daemon not runningsystemctl --user enable --now gnome-remote-desktop
RDP server started but connection rejectedCredentials missinggrdctl rdp set-credentials USER PASSWORD
Windows cannot reach portFirewall/networkCheck UFW and Test-NetConnection
3389 doesn't workDifferent RDP mode/portCheck Desktop Sharing/Remote Login
Desktop Sharing doesn't work after rebootNobody logged into GNOMEUse Remote Login
Wrong screen resolutionDesktop Sharing uses existing session resolutionUse Remote Login for client-sized session
grdctl rdp status failsUnsupported commandUse grdctl status and grdctl --help
Hostname doesn't resolveLocal DNS/mDNS issueUse the Ubuntu IP address
Works locally but not remotelyRouter/NAT/VPN issueUse 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-desktop is installed

  • RDP backend is enabled

  • RDP credentials are configured

  • gnome-remote-desktop is running

  • Ubuntu 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 mstsc is pointed at the correct IP and port

  • Correct 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

Featured Posts

How to Enable and Configure Remote Desktop (RDP) on Ubuntu 24.04.4 LTS

Remote Desktop Protocol (RDP) support in Ubuntu has become considerably easier with the GNOME Remote Desktop stack included in modern Ubuntu...