Ubuntu Linux med Remote Desktop
Der kan være mange grunde til, at man gerne vil have mulighed for at have en Linux desktop, uden at man nødvendigvis har den tilsluttet til en skærm. For mig var det primært et ønske om, at kunne køre forskellige desktop applikationer, som eksempelvis en browser på en Linux maskine, uden samtidig at skulle køre en VPN for at skjule min IP-adresse.
For at komme i gang, så skal du naturligvis have en virtuel maskine et sted ude i verden. Det kan eksempelvis være hos Digital Ocean, Hetzner, Scaleway eller en af de mange andre – det er rimelig nemt at komme i gang, og afhængigt af hvad du skal bruge maskinen til, så behøves den ikke at være en af de helt store.
Personligt har jeg en virtuel maskine med 2 CPU, 4GB ram og 40GB harddisk, og det kører faktisk de ting jeg har brug for ganske udmærket. Linux distributionen som jeg har valgt til formålet, er en Ubuntu 20.04.2 LTS.
Jeg synes tidligere, at det har været lidt besværligt at få sat en server op med remote desktop, og mine noter til dette blogindlæg, som har været undervejs i et stykke tid, er også væsentligt længere end nedenstående kommandoer. Dette skyldes, at jeg undervejs løb på en masse problemer, som muligvis er blevet fikset efterfølgende.
Anyways, på en helt ren Ubuntu 20.04.2 LTS, skal følgende kommandoer køres som root (eller smid sudo foran dem, hvis du hellere vil gøre det på den pæne måde):
apt update -y && apt upgrade -y
apt install xrdp xfce4 xorgxrdp dbus-x11 xorg -y
adduser xrdp ssl-cert
adduser DIT-BRUGERNAVN
adduser DIT-BRUGERNAVN ssl-cert
reboot
Nu kan du forbinde til serveren med Remote Desktop, og logge ind med den bruger som du netop har oprettet til formålet. Hvis du har brug for, at der er flere brugere af gangen som kan logge på serveren via RDP, så er det bare at oprette brugeren og efterfølgende tilføje den til ”ssl-cert” gruppen. Til at oprette forbindelsen, kan du bruge en af følgende klienter FreeRDP, rdesktop, NeutrinoRDP og Microsoft Remote Desktop Client (både til Windows, macOS, iOS og Android).
Ligesom man kender det fra Remote Desktop forbindelser imellem to Windows maskiner, så understøtter xrdp også følgende features: to-vejs overførsel af clipboard (tekst, bitmap, filer), audio redirection (få lyden fra remote maskinen ud på din egen maskine) og drive redirection (mount lokale drev på den maskine som du RDP'er til).
Og i øvrigt kan det tilføjes, at Remote Desktop protokollen er krypteret med TLS som standard.
Tweak af xrdp konfigurationen
Hvis du skulle få lyst til at kigge nærmere på konfigurationen bag xrdp, så kan du finde den i /etc/xrdp – mere specifikt så er det filerne /etc/xrdp/xrdp.ini, /etc/xrdp/sesman.ini og /etc/xrdp/startwm.sh som vil være interessante for de fleste. Jeg vil lade det være op til dig selv, om du har behov for at rette noget i konfigurationen, den virker nemlig ganske fornuftigt som standard.
Dog kan det være en god ide, lige at være opmærksom på følgende indstillinger i /etc/xrdp/sesman.ini
ListenAddress=127.0.0.1 (default)
AllowRootLogin=false (den er som default true)
I /etc/xrdp/xrdp.ini kan du tilpasse de forskellige sikkerhedsinstillinger, som eksempelvis hvilke protokoller der skal anvendes, hvordan authentikeringen skal foregå. Det er også her, at du kan fjerne de sessionstyper som du ikke ønsker at anvende, det beskrevne setup bruger udelukkende Xorg. Synes du at designet på loginskærmen er lidt kedelig, så kan du også ændre farverne eller tilføje et logo.
Firewall opsætning
Det er selvfølgelig en rigtig god ide, at tilføje en firewall foran både SSH og RDP portene, der indtil videre i dette setup har været åbne. På Ubuntu kan du gøre det ret nemt på følgende måde:
apt install ufw
ufw default allow outgoing
ufw allow from DIN-IP-ADRESSE to any port 22
ufw allow from DIN-IP-ADRESSE to any port 3389
ufw enable
Du kan tjekke status for firewallen ved at køre følgende kommando:
ufw status verbose
For yderligere hjælp til konfiguration af firewallen, så kan du eventuelt kigge på denne artikel hos Digital Ocean, den dækker det basale rigtig godt.
Når det hele er installeret og konfigureret, så skulle du gerne opleve følgende desktop når du logger ind på din nye Linux maskine via Remote Desktop:
Til sidst vil jeg lige nævne, at jeg tidligere er løbet ind i en række problemer som krævede nogle ekstra tweaks af konfigurationsfilerne. Et eksempel på det er, at skærmen bare er blank efter man er logget ind, eller at det ikke var muligt at være to brugere logget ind på samme tid. Men på trods af at jeg gentagne gange nu har testet ovenstående konfiguration, så er det ikke lykkedes mig at løbe ind i de fejl igen i de nuværende versioner af Ubuntu og xrdp.