Kali Linux + GNOME 50 + GNOME Remote Desktop + Windows Remote Desktop (MSTSC)
Getting a full GNOME desktop remotely on Kali Linux can be confusing because there are several different technologies involved: GNOME, GDM3, Wayland, gnome-remote-desktop, RDP, and the user/system systemd services.
This guide documents a working Kali Linux setup where a Windows machine connects to Kali using the built-in Remote Desktop Connection (mstsc) and receives a full GNOME desktop session.
The important part is that this configuration uses GNOME Remote Login, rather than traditional xrdp.
What We Are Building
The final architecture looks like this:
┌─────────────────────────────┐ │ Windows 10/11 │ │ │ │ Remote Desktop Connection │ │ mstsc.exe │ └──────────────┬──────────────┘ │ │ RDP / TCP 3389 │ ▼ ┌─────────────────────────────┐ │ Kali Linux │ │ │ │ GDM3 │ │ │ │ │ ▼ │ │ GNOME Remote Desktop │ │ │ │ │ ▼ │ │ GNOME Desktop │ │ GNOME Shell 50.x │ │ │ │ Wayland │ └─────────────────────────────┘
GNOME's Remote Login implementation integrates with GDM and provides remote login through RDP. GNOME documents this as the headless multi-user remote login mode.
Why GNOME Instead of Xfce?
Kali supports several desktop environments, including GNOME and Xfce. The Kali GNOME desktop is provided by the kali-desktop-gnome metapackage and includes components such as gdm3, gnome-session, and gnome-shell.
For this configuration, the goal was specifically:
Windows ↓ RDP ↓ Kali ↓ GNOME
Rather than:
Windows ↓ xrdp ↓ Xfce
Both approaches are possible, but they are different architectures.
GNOME Remote Desktop has native support for RDP and can integrate with GDM for remote login.
Step 1 — Check the Current Desktop
When connecting to Kali through SSH, these commands may initially show:
echo "Desktop: $XDG_CURRENT_DESKTOP" echo "Session: $XDG_SESSION_TYPE"
Output:
Desktop: Session: tty
This does not mean GNOME is missing.
It simply means the current SSH session is a TTY rather than a graphical GNOME session.
For example, GNOME Shell itself can still be installed:
gnome-shell --version
In this setup, the system reported:
GNOME Shell 50.4
So the important distinction is:
SSH session ↓ TTY RDP session ↓ GNOME graphical session
Do not use the SSH environment variables alone to determine whether GNOME is installed.



