Ubuntu Cloud installeren als RDP-enabled Remote Desktop in een offline Openstack omgeving

In deze handleiding zetten we een RDP-enabled Linux host op die dienst doet als Remote Desktop op een omgeving met beperkte toegang (geen internet verbinding). Een bijkomende vereiste is dat meerdere gebruikers dezelfde inloggegevens op deze host kunnen delen.

Daarvoor gebruiken we twee gespiegelde instanties van Ubuntu Cloud servers, een online en de andere offline, zodat de juiste pakketten op de offline server kunnen worden uitgerold. Ook is het Xfce4 bureaublad gekozen vanwege de mogelijkheid om meerdere sessies voor een enkele gebruiker te openen. Tot op het moment dat de handleiding geschreven werd rekende Gnome niet op deze eigenschap.

Offline installatie

Om installatie in een offline systeem mogelijk te maken zetten we een identiek systeem in een online VirtualBox, met de volgende commando-volgorde voor elk pakket:

Op het online systeem:

sudo apt-get install --download-only <package list>

Kopieer pakketten van online /var/cache/apt/archives naar de PC (met een sftp client of een gedeelde map van VirtualBox) en van de PC naar het offline systeem. Dan, op beide systemen:

dpkg -i /var/cache/apt/archives/*.deb

Maak ten slotte apt archieven schoon:

apt-get clean

Download Ubuntu cloud image

Gebruik deze link. Voor OpenStack zullen we de img extensie gebruiken, equivalent met qcow2. Voor VirtualBox hebben we de ova nodig, die al een vmdk schijfbestand bevat.

Maak de twee Virtuele Machines

In OpenStack:

Upload image naar blik:

glance image-create --name "Ubuntu Cloud image" --file ubuntu-18.04-server-cloudimg-amd64.img --is-public False --container-format bare --disk-format qcow2

Maak een hot template, hier is een voorbeeld met één vast IP en extra schijfruimte:

heat_template_version: 2018-04-30

description: Remote Desktop deployment

resources:

port_vm:
type: OS::Neutron::Port
properties:
network: <network name>
fixed_ips:
– subnet: <subnet name>
ip_address: <ip address>

server:
type: OS::Nova::Server
properties:
name: <instance name>
flavor: <flavor name>
availability_zone: <zone name>
networks:
– port: { get_resource: port_vm }

new_volume:
type: OS::Cinder::Volume
properties:
size: <disk space in MB>

volume_attachment:
type: OS::Cinder::VolumeAttachment
properties:
volume_id: { get_resource: new_volume }
instance_uuid: { get_resource: server }

Maak de stack, de instantie wordt automatisch gestart:

heat stack-create -f <FILE> -e <FILE> <STACK_NAME>

Maak verbinding met console, controleer of de VM met succes is opgestart. Herstart met Ctrl-Alt Del en druk op Linker-Shift om de herstelmodus te openen en het root wachtwoord te veranderen.

In VirtualBox:

Importeer het ova bestand als een nieuw apparaat. Zorg ervoor dat je een seriële poort activeert, hij kan losgekoppeld blijven, hij wordt gebruikt om een van de stappen tijdens cloud initialisatie te omzeilen. Zorg er ook voor dat je network bridged adapter kiest en associeer met de host netwerk interface die internet toegang heeft.

Start op met Linker-Shift ingedrukt en krijg toegang tot de GRUB herstelmodus. Daar kun je het root wachtwoord veranderen in wat je verkiest. Boot en log deze keer normaal in.

Voer parted uit om de partitiegegevens te corrigeren:

Partitioneren met parted

Accepteer om GPT te corrigeren, gebruik dan “resizepart” om de hele bestaande ruimte op de schijf te benutten:

Formaat van partitie wijzigen

Sluit parted af en gebruik resize2fs om het bestandssysteem aan te passen:

Afscheid genomen

Nu zou df -h 10G beschikbaar moeten tonen.

Controleer de IP connectiviteit

Hoewel Openstack het juiste IP adres via DHCP kan leveren, zullen we een statisch ik beide omgevingen configureren. Maak een bestand met yaml extensie in /etc/netplan, stel IP adres en gateway overeenkomstig in:

network:
       version: 2
       renderer: networkd
       ethernets:
               enp0s3:
                       dhcp4: no
                       addresses: [192.168.1.100/24]
                       gateway4: 192.168.1.1
                       nameservers:
                               addresses: [192.168.1.1]

Pas de nieuwe configuratie toe:

netplan apply

Nu zou de connectiviteit moeten werken van VM naar de gateway en van je PC naar beide VM’s.

Zodra in VirtualBox VM internetverbinding wordt geboden, moet je apt bijwerken:

apt-get update

Merk op dat, als je ervoor kiest Gnome in plaats van Xfce4 desktop te installeren, je networkd moet vervangen door NetworkManager zodra je deze installatie voltooid hebt.

Configureer SSH

We zullen root ssh toegang inschakelen. Bewerk de standaard /etc/ssh/sshd_config:

  • Schakel alle 3 HostKeys in
  • Zet PermitRootLogin op ja
  • Schakel HostBasedAuthentication uit
  • Schakel clear-text password in (PasswordAuthentication ja, PermitEmptyPasswords nee)

Controleer ook /etc/ssh op de aanwezigheid van hostkey bestanden, in VirtualBox ontbreken ze meestal. Genereer nieuwe met ssh-keygen:

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519 -N ""

Herstart de dienst:

service sshd restart

Nu moet je naar nieuwe VM’s kunnen ssh-en. Als je wilt, kun je een privaat/publiek sleutelpaar genereren om het clear-text wachtwoord te vervangen.

Installeer Xfce4

Dit zijn de stappen om xfce4 desktop in Ubuntu te installeren.

In VirtualBox:

apt-get update
apt-get install --download-only xfce4 xfce4-terminal gnome-icon-theme-full tango-icon-theme
dpkg -i /var/cache/apt/archives/*.deb

Kopieer dan deb pakketten uit /var/cache/apt/archives naar Openstack VM. Vergeet niet om /var/cache/apt/archives op te schonen.

In Openstack:

dpkg -i /var/cache/apt/archives/*.deb
apt-get clean

Voeg daarna voor de twee VM’s nieuwe gebruiker ubuntu toe en voeg hem toe aan sudo groep:

adduser ubuntu
usermod -aG sudo ubuntu

Klik gewoon op ENTER voor alle vragen en dat is het. De thuismap wordt automatisch toegevoegd.

Installeer XRDP

Verander de gebruiker in ubuntu zodat XRDP de vereiste configuratie uitvoert in /home/ubuntu.

In VirtualBox:

sudo apt-get install --download-only xrdp
sudo dpkg -i /var/cache/apt/archives/*.deb

Kopieer deb-pakketten uit /var/cache/apt/archives naar Openstack VM. Maak /var/cache/apt/archives schoon.

In Openstack:

sudo dpkg -i /var/cache/apt/archives/*.deb
sudo apt-get clean

Configureer XRDP op beide:

Bewerk /etc/xrdp/sesman.ini en stel Policy=UBDC in. Dit maakt meerdere sessies met dezelfde gebruikersnaam mogelijk.

Bewerk /etc/xrdp/startwm.sh, voeg startxfce4 toe aan het eind:

#!/bin/sh

if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4

Start de XRDP dienst opnieuw:

sudo service xrdp restart

Installeer webbrowsers

Aan Xfce4 moeten webbrowsers worden toegevoegd. Zoek naar Google Chrome deb op het internet en installeer het met dpkg.

Firefox kun je direct uit de Ubuntu repositories halen.

In VirtualBox:

sudo apt-get install --download-only firefox
sudo dpkg -i /var/cache/apt/archives/*.deb

Kopieer deb pakketten uit /var/cache/apt/archives naar Openstack VM. Maak /var/cache/apt/archives schoon.

In Openstack:

sudo dpkg -i /var/cache/apt/archives/*.deb
sudo apt-get clean

Voeg snelkoppelingen voor elke browser toe in taakbalk en/of bureaublad.

En dat is het. Open meerdere RDP sessies naar de server en controleer of alles werkt.