BLOG POSTS
    MangoHost Blog / How to Set Up a Remote Desktop with X2Go on Ubuntu 24
How to Set Up a Remote Desktop with X2Go on Ubuntu 24

How to Set Up a Remote Desktop with X2Go on Ubuntu 24

X2Go provides a low-bandwidth, secure remote desktop solution that significantly outperforms traditional VNC connections while offering better encryption than standard RDP protocols. If you’re managing Ubuntu 24 servers or need reliable remote access with near-native performance, X2Go becomes an essential tool in your arsenal. This guide walks through the complete X2Go setup process, from server installation to client configuration, including performance optimization and troubleshooting common deployment issues.

How X2Go Works Under the Hood

X2Go leverages SSH tunneling for secure connections and utilizes the NX compression technology to minimize bandwidth usage. Unlike VNC which transmits raw pixel data, X2Go sends compressed graphics and caches frequently used elements locally on the client side. The architecture consists of three main components:

  • X2Go Server: Runs on the target Ubuntu machine and manages session handling
  • X2Go Client: Installed on your local machine for connecting to remote sessions
  • Session Manager: Handles multiple concurrent sessions and session persistence

The protocol achieves impressive performance by compressing data streams up to 1000:1 ratio on typical desktop environments, making it viable even over slow network connections. Session suspension and resumption capabilities allow you to disconnect and reconnect without losing your work state.

Server Installation and Configuration

Start by updating your Ubuntu 24 system and installing the X2Go server components:

sudo apt update && sudo apt upgrade -y
sudo apt install x2goserver x2goserver-xsession -y

Install a lightweight desktop environment if your server doesn’t have one. MATE works exceptionally well with X2Go:

sudo apt install ubuntu-mate-desktop -y

For minimal resource usage, consider XFCE instead:

sudo apt install xfce4 xfce4-goodies -y

Create a dedicated user account for remote desktop access:

sudo adduser x2gouser
sudo usermod -aG sudo x2gouser

Configure SSH to allow the X2Go service. Edit the SSH configuration:

sudo nano /etc/ssh/sshd_config

Ensure these settings are configured:

AllowUsers x2gouser
X11Forwarding yes
TCPKeepAlive yes
ClientAliveInterval 60
ClientAliveCountMax 10

Restart SSH service to apply changes:

sudo systemctl restart ssh

Firewall Configuration and Security Hardening

X2Go uses SSH (port 22) for connections, so configure UFW appropriately:

sudo ufw allow ssh
sudo ufw enable

For enhanced security, change the default SSH port and configure key-based authentication:

sudo nano /etc/ssh/sshd_config

Add or modify these lines:

Port 2022
PasswordAuthentication no
PubkeyAuthentication yes

Generate SSH keys on your client machine and copy the public key:

ssh-keygen -t rsa -b 4096 -C "x2go-access"
ssh-copy-id -p 2022 x2gouser@your-server-ip

Client Installation and Connection Setup

Install X2Go client on your local machine. For Ubuntu/Debian clients:

sudo apt install x2goclient -y

For Windows, download the client from the official X2Go wiki.

Launch X2Go client and create a new session with these configurations:

  • Session name: Ubuntu24-Remote
  • Host: your-server-ip
  • Login: x2gouser
  • SSH port: 2022 (if changed)
  • Session type: MATE or XFCE4

For optimal performance, configure connection settings under the “Connection” tab:

  • Connection speed: LAN for local networks, WAN for internet connections
  • Compression method: 4k-png for high-quality displays, 256k-jpeg for slower connections
  • Image quality: Adjust based on bandwidth availability

Performance Optimization and Configuration Tuning

Create a custom X2Go session configuration file for enhanced performance:

sudo nano /etc/x2go/x2goserver.conf

Add these optimization settings:

[server]
superenicer.enabled=yes
printing.enable=yes
printing.command=/usr/bin/x2goprint

[cache]
persistent-cache-max-size=500M
shared-folders.enable=yes

For servers with limited resources, create a custom session script:

nano ~/.x2gosession.sh
#!/bin/bash
export PULSE_RUNTIME_PATH="/tmp/pulse-x2go-$USER"
export DISPLAY=:50
exec /usr/bin/mate-session

Make it executable:

chmod +x ~/.x2gosession.sh

X2Go vs Alternative Remote Desktop Solutions

Feature X2Go VNC RDP SSH + X11
Bandwidth Efficiency Excellent Poor Good Fair
Session Persistence Yes No Limited No
Security High (SSH) Low Medium High (SSH)
Audio Support Yes Limited Yes Limited
File Sharing Built-in No Yes Manual
Multi-user Yes Limited Yes Yes

Real-World Use Cases and Performance Data

X2Go excels in several scenarios where traditional remote desktop solutions fall short:

  • Development environments: Running IDEs like VSCode, IntelliJ, or Eclipse remotely with near-native responsiveness
  • Server administration: Managing multiple Ubuntu servers through graphical interfaces without physical access
  • Remote work setups: Accessing office workstations securely from home with full desktop functionality
  • Resource sharing: Providing users access to high-performance servers for computational tasks

Performance testing on a VPS environment shows impressive results:

Connection Type Bandwidth Usage Latency Impact CPU Usage (Server)
X2Go LAN 2-5 Mbps Minimal 5-15%
X2Go WAN 0.5-2 Mbps Low 8-20%
VNC Comparison 10-50 Mbps High 15-30%

Advanced Configuration and Troubleshooting

For production deployments on dedicated servers, implement these advanced configurations:

Enable session shadowing for support purposes:

sudo nano /etc/x2go/x2goserver.conf
[shadow]
enable=yes
ask_user_for_permission=yes

Configure automatic session cleanup:

sudo crontab -e
0 2 * * * /usr/bin/x2gocleansessions --clean

Common troubleshooting scenarios and solutions:

  • Black screen on connection: Usually indicates desktop environment issues. Verify MATE/XFCE installation and session configuration
  • Authentication failures: Check SSH key permissions and ensure the user exists in the system
  • Poor performance: Adjust compression settings and verify network connectivity
  • Session not starting: Check X2Go server logs at /var/log/x2goserver.log

Debug connection issues with verbose logging:

ssh -vvv -p 2022 x2gouser@your-server-ip

Monitor active X2Go sessions:

x2golistsessions

Security Best Practices and Production Considerations

Implement these security measures for production X2Go deployments:

  • Use fail2ban to prevent brute force attacks on SSH
  • Configure certificate-based authentication instead of passwords
  • Implement network-level access controls through VPN or IP whitelisting
  • Regular security updates and monitoring of X2Go components
  • Session timeout configuration to prevent abandoned connections

Install and configure fail2ban:

sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2022
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

For environments requiring high availability, consider implementing load balancing across multiple X2Go servers or using session clustering. The combination of X2Go’s efficiency and Ubuntu 24’s stability creates a robust remote desktop solution suitable for both development and production workloads.

Monitor system resources and user sessions regularly, especially in multi-user environments, to ensure optimal performance. X2Go’s session management capabilities make it particularly well-suited for environments where users need persistent desktop sessions across multiple connection sessions.



This article incorporates information and material from various online sources. We acknowledge and appreciate the work of all original authors, publishers, and websites. While every effort has been made to appropriately credit the source material, any unintentional oversight or omission does not constitute a copyright infringement. All trademarks, logos, and images mentioned are the property of their respective owners. If you believe that any content used in this article infringes upon your copyright, please contact us immediately for review and prompt action.

This article is intended for informational and educational purposes only and does not infringe on the rights of the copyright owners. If any copyrighted material has been used without proper credit or in violation of copyright laws, it is unintentional and we will rectify it promptly upon notification. Please note that the republishing, redistribution, or reproduction of part or all of the contents in any form is prohibited without express written permission from the author and website owner. For permissions or further inquiries, please contact us.

Leave a reply

Your email address will not be published. Required fields are marked