VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04
Sommige gebruikers huren relatief goedkope VPS met Windows om externe desktopservices uit te voeren. Hetzelfde kan worden gedaan op Linux zonder uw eigen hardware in een datacenter te hosten of een speciale server te huren. Sommige mensen hebben een vertrouwde grafische omgeving nodig voor testen en ontwikkelen, of een extern bureaublad met een breed kanaal om vanaf mobiele apparaten te werken. Er zijn veel opties voor het gebruik van het op het Remote FrameBuffer (RFB)-protocol gebaseerde Virtual Network Computing (VNC)-systeem. In dit korte artikel zullen we u vertellen hoe u het op een virtuele machine met elke hypervisor kunt configureren.

авление:

Een VNC-server selecteren
Installatie en configuratie
Een service starten via systemd
Desktop-verbinding

Een VNC-server selecteren

De VNC-service kan in het virtualisatiesysteem worden ingebouwd en de hypervisor zal deze verbinden met de geëmuleerde apparaten. Er is geen aanvullende configuratie vereist. Deze optie brengt aanzienlijke overhead met zich mee en wordt niet door alle providers ondersteund - zelfs niet bij een minder resource-intensieve implementatie, waarbij in plaats van een echt grafisch apparaat te emuleren, een vereenvoudigde abstractie (framebuffer) naar de virtuele machine wordt overgebracht. Soms is een VNC-server gekoppeld aan een actieve X-server, maar deze methode is geschikter voor toegang tot een fysieke machine, en op een virtuele machine veroorzaakt dit een aantal technische problemen. De eenvoudigste manier om een ​​VNC-server te installeren is met een ingebouwde X-server. Het vereist geen fysieke apparaten (videoadapter, toetsenbord en muis) of de emulatie ervan met behulp van een hypervisor, en is daarom geschikt voor elk type VPS.

Installatie en configuratie

We hebben een virtuele machine nodig met Ubuntu Server 18.04 LTS in de standaardconfiguratie. Er zijn verschillende VNC-servers in de standaardrepository's van deze distributie: TightVNC, TijgerVNC, x11vnc en anderen. We hebben gekozen voor TigerVNC - een huidige fork van TightVNC, die niet wordt ondersteund door de ontwikkelaar. Het opzetten van andere servers gebeurt op een vergelijkbare manier. Je moet ook een desktopomgeving kiezen: de optimale optie zou naar onze mening XFCE zijn vanwege de relatief lage eisen aan computerbronnen. Degenen die dat wensen, kunnen een andere DE of WM installeren: het hangt allemaal af van persoonlijke voorkeuren, maar de softwarekeuze heeft rechtstreeks invloed op de behoefte aan RAM en computerkernen.

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

Het installeren van de desktopomgeving met alle afhankelijkheden gebeurt met het volgende commando:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Vervolgens moet u de VNC-server installeren:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Het is een slecht idee om het als superuser uit te voeren. Maak een gebruiker en groep aan:

sudo adduser vnc

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

Laten we de gebruiker toevoegen aan de sudo-groep, zodat hij beheergerelateerde taken kan uitvoeren. Als dit niet nodig is, kunt u deze stap overslaan:

sudo gpasswd -a vnc sudo

De volgende stap is het uitvoeren van de VNC-server met vnc-gebruikersrechten om een ​​veilig wachtwoord en configuratiebestanden in de map ~/.vnc/ aan te maken. De wachtwoordlengte kan 6 tot 8 tekens bedragen (extra tekens worden verwijderd). Indien nodig wordt ook een wachtwoord ingesteld om alleen te bekijken, d.w.z. zonder toegang tot toetsenbord en muis. De volgende opdrachten worden uitgevoerd als vnc-gebruiker:

su - vnc
vncserver -localhost no

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04
Standaard gebruikt het RFB-protocol het TCP-poortbereik van 5900 tot 5906 - dit is het zogenaamde. displaypoorten, die elk overeenkomen met een X-serverscherm. In dit geval zijn de poorten gekoppeld aan schermen van :0 tot :6. De VNC-serverinstantie die we hebben gelanceerd, luistert naar poort 5901 (scherm: 1). Andere instances kunnen op andere poorten werken met de schermen :2, :3, enz. Voordat u verder kunt configureren, moet u de server stoppen:

vncserver -kill :1

Het commando zou zoiets als dit moeten weergeven: "Killing Xtigevnc process ID 18105... succes!"

Wanneer TigerVNC start, wordt het script ~/.vnc/xstartup uitgevoerd om de configuratie-instellingen te configureren. Laten we ons eigen script maken en eerst een back-up maken van het bestaande script, als dit bestaat:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

De XFCE-desktopomgevingssessie wordt gestart door het volgende xstartup-script:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

De opdracht xrdb is vereist zodat VNC het .Xresources-bestand in de thuismap kan lezen. Daar kan de gebruiker verschillende grafische bureaubladinstellingen definiëren: lettertypeweergave, terminalkleuren, cursorthema's, enz. Het script moet uitvoerbaar worden gemaakt:

chmod 755 ~/.vnc/xstartup

Hiermee is de installatie van de VNC-server voltooid. Als u het uitvoert met de opdracht vncserver -localhost no (als vnc-gebruiker), kunt u verbinding maken met het eerder opgegeven wachtwoord en de volgende afbeelding zien:

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

Een service starten via systemd

Het handmatig starten van een VNC-server is niet geschikt voor gevechtsgebruik, daarom zullen we een systeemservice configureren. De opdrachten worden uitgevoerd als root (we gebruiken sudo). Laten we eerst een nieuw eenheidsbestand voor onze server maken:

sudo nano /etc/systemd/system/[email protected]

Met het @-symbool in de naam kunt u een argument doorgeven om de service te configureren. In ons geval specificeert het de VNC-weergavepoort. Het eenheidsdossier bestaat uit verschillende secties:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Vervolgens moet u systemd op de hoogte stellen van het nieuwe bestand en het activeren:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

Het getal 1 in de naam geeft het schermnummer aan.

Stop de VNC-server, start deze als een service en controleer de status:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Als de service actief is, zouden we zoiets als dit moeten krijgen.

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

Desktop-verbinding

Onze configuratie maakt geen gebruik van encryptie, waardoor netwerkpakketten door aanvallers kunnen worden onderschept. Bovendien komt het vrij vaak voor op VNC-servers kwetsbaarheden vinden, dus u moet ze niet openen voor toegang vanaf internet. Om veilig verbinding te maken op uw lokale computer, moet u het verkeer in een SSH-tunnel verpakken en vervolgens een VNC-client configureren. In Windows kunt u een grafische SSH-client gebruiken (bijvoorbeeld PuTTY). Uit veiligheidsoverwegingen luistert TigerVNC op de server alleen naar localhost en is niet rechtstreeks toegankelijk vanaf openbare netwerken:


sudo netstat -ap |more

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04
In Linux, FreeBSD, OS X en andere UNIX-achtige besturingssystemen wordt een tunnel vanaf de clientcomputer gemaakt met behulp van het ssh-hulpprogramma (sshd moet op de VNC-server draaien):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

De optie -L bindt poort 5901 van de externe verbinding aan poort 5901 op localhost. De optie -C maakt compressie mogelijk, en de optie -N vertelt ssh om de externe opdracht niet uit te voeren. De optie -l specificeert inloggen voor extern inloggen.

Nadat u de tunnel op de lokale computer hebt ingesteld, moet u de VNC-client starten en een verbinding tot stand brengen met de host 127.0.0.1:5901 (localhost:5901), met behulp van het eerder opgegeven wachtwoord om toegang te krijgen tot de VNC-server. We kunnen nu veilig communiceren via een gecodeerde tunnel met de XFCE grafische desktopomgeving op de VPS. In de schermafbeelding draait het bovenste hulpprogramma in de terminalemulator om het lage verbruik van computerbronnen door de virtuele machine te laten zien. Dan zal alles afhangen van gebruikersapplicaties.

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04
Op vrijwel iedere VPS kun je een VNC-server in Linux installeren en configureren. Hiervoor zijn geen dure en resource-intensieve configuraties met videoadapter-emulatie of de aanschaf van commerciële softwarelicenties nodig. Naast de systeemserviceoptie die we hebben overwogen, zijn er nog andere: starten in daemonmodus (via /etc/rc.local) wanneer het systeem opstart of op aanvraag via inetd. Dit laatste is interessant voor het maken van configuraties voor meerdere gebruikers. De Internet Superserver start de VNC-server en verbindt de client ermee, en de VNC-server maakt een nieuw scherm aan en start de sessie. Om daarin te authenticeren, kunt u een grafische weergavemanager gebruiken (bijvoorbeeld lightdm), en nadat de verbinding met de client is verbroken, wordt de sessie beëindigd en worden alle programma's die met het scherm werken beëindigd.

VPS op Linux met een grafische interface: lancering van een VNC-server op Ubuntu 18.04

Bron: www.habr.com

Voeg een reactie