Remote GUI Desktops
General Information
Remote desktop application setup.
Checklist
- Pre-req: Install a GUI desktop on the remote server.
X2Go
X2Go is “an open source remote desktop software for Linux that uses the NX technology protocol”.
- Official Site: https://wiki.x2go.org/doku.php
X2Go: Install
Desktop Environment Compatibility
- Compatible, No Workarounds
- LXDE
- XFCE
- MATE
- Compatible, with Workarounds
- KDE 5 (plasma) → very slow
- Cinnamon → Buggy, requires fallback mode
- More Details: https://wiki.x2go.org/doku.php/doc:de-compat
X2Go: Install on Servers
- CentOS 6 and 7: Install x2go server
yum install fuse-sshfs x2goserver x2goserver-xsession
- Note: There is no service to start, as the x2go clients connect via ssh and use the NX protocol to forward the graphical display.
X2Go: Install on Clients
- Download the last client from: https://wiki.x2go.org/doku.php/download:start
- Follow online instructions and launch client after install
X2Go: Configure
Configuring x2go.
X2Go config files are located:
- /etc/x2go/
Server: Fix for atom/other text editors crashing connected via X2GoClient
- Edit server side config file (/etc/x2go/x2goagent.options) and append
#- Fix for Atom Crashing: https://github.com/atom/atom/issues/4360 -# X2GO_NXAGENT_DEFAULT_OPTIONS+=" -extension BIG-REQUESTS"
Client: Fix for Windows Firewall Messages Popping Up
- Windows Firewall messages pop up about various features being blocked during connection. To make these go away, some X2GoClient session features can be disabled.
- X2Go Client Window: Session > Session management…
- Select your saved session > click Session preferences
- Click the Media tab
- Uncheck “Enable sound support”
- Uncheck “Client side printing support”
- Click “Ok”
- On Session Management, Click “Exit”
Client: Performance Settings
- Various performance settings in the X2Go Client
- Session Preferences
- Connection tab
- Connection Speed: Adjust to connection speed
- Compression Method and Quality
XRDP
xrdp runs on a Linux system and allows for native Windows RDP to connect to it.
Note: xrdp checks only if a session with the same geometry is already opened. It will start a new session if the geometry/resolution doesn't match. This means if you connect using an external monitor initially, and resume with a different monitor with different resolution being sent, you will get a new session. Resolution settings are configurable via the RDP client display settings. (Full screen is the default)
XRDP: Install
Install xrdp
yum install xrdp
XRDP: Configure
Performance Settings
- Change xrdp bpp to 16 (/etc/xrdp/xrdp.ini)
sed -i 's/max_bpp=32/max_bpp=16/' /etc/xrdp/xrdp.ini
- Increase Max Sessions (/etc/xrdp/sesman.ini)
sed -i 's/MaxSessions=10/MaxSessions=50/' /etc/xrdp/sesman.ini
Security Settings
- Only Allows TLS1.2
sed -i 's/ssl_protocols=.*/ssl_protocols=TLSv1.2/' /etc/xrdp/xrdp.ini
- Set Ciphers to AES
sed -i 's/#*tls_ciphers=.*/tls_ciphers=AES/' /etc/xrdp/xrdp.ini
Log Settings
- Set logging levels to warning instead of debug
sed -i 's/LogLevel=.*/LogLevel=WARNING/' /etc/xrdp/xrdp.ini sed -i 's/SyslogLevel=.*/SyslogLevel=WARNING/' /etc/xrdp/xrdp.ini
PATH Settings
- Add 'source /etc/profile' to xrdp's start script to get login PATH settings
vim /etc/xrdp/startwm.sh if [ -f /etc/X11/xinit/xinitrc ] then source /etc/profile . /etc/X11/xinit/xinitrc exit 0 fi
Restart and enable xrdp
systemctl restart xrdp
systemctl enable xrdp
Ensure we are still starting the server in multi-user (no gui), change if not
systemctl get-default systemctl set-default multi-user.target