VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04
Nogle brugere lejer relativt billige VPS med Windows til at køre en tjeneste til fjernarbejdsbord. Det samme kan gøres på Linux uden at skulle placere eget hardware i et datacenter eller leje en dedikeret server. Nogle har brug for et velkendt grafisk miljø til test og udvikling eller et fjernarbejdsbord med høj båndbredde til mobilarbejde. Der er mange anvendelsesmuligheder for Virtual Network Computing (VNC), der er baseret på protokol Remote FrameBuffer (RFB). I denne korte artikel vil vi vise, hvordan man konfigurerer det på en virtuel maskine med enhver hypervisor.

Indholdsfortegnelse:

Valg af VNC-server
Installation og konfiguration
Start af tjenesten via systemd
Forbindelse til arbejdsbordet

Valg af VNC-server

VNC-tjenesten kan være indbygget i virtualisering systemet, hvor hypervisoren forbinder den til de emulerede enheder, og der kræves ikke yderligere konfiguration. Denne mulighed indebærer betydelige omkostninger og understøttes ikke af alle udbydere — selv i en mindre ressourcekrævende implementering, hvor der i stedet for at emulere en rigtig grafisk enhed gives en forenklet abstraktion (framebuffer) til den virtuelle maskine. Nogle gange knyttes VNC-serveren til en kørende X-server, men denne metode er mere egnet til adgang til fysiske maskiner, og på virtuelle maskiner skaber den en række tekniske udfordringer. Det er enklest at installere en VNC-server med en indbygget X-server. Den kræver ikke tilstedeværelsen af fysiske enheder (grafikkort, tastatur og mus) eller deres emulering via hypervisoren; og derfor passer den til enhver type VPS.

Installation og konfiguration

Vi har brug for en virtuel maskine med Ubuntu Server 18.04 LTS i standardkonfiguration. I standardarkiverne for denne distribution er der flere VNC-servere: TightVNC, TigerVNC, x11vnc og andre. Vi valgte TigerVNC — den aktuelle fork af den ikke-understøttede TightVNC. Konfigurationen af de andre servere udføres på en lignende måde. Man skal også vælge et skrivebordsmiljø: efter vores mening vil XFCE være den optimale mulighed på grund af de relativt lave krav til computerressourcer. De interesserede kan installere en anden DE eller WM: det afhænger helt af personlige præferencer, men valget af software påvirker direkte behovet for RAM og beregningskerner.

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

Installationen af desktopmiljøet med alle afhængigheder udføres med følgende kommando:

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

Derefter skal du installere VNC-serveren:

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

At køre den med superbrugerrettigheder er en dårlig idé. Opret en bruger og en gruppe:

sudo adduser vnc

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

Lad os tilføje brugeren til sudo-gruppen, så han kan løse administrativt relaterede opgaver. Hvis der ikke er behov for det, kan dette trin springes over:

sudo gpasswd -a vnc sudo

Næste skridt er at starte VNC-serveren med vnc-brugerens privilegier for at oprette en sikker adgangskode og konfigurationsfiler i mappen ~/.vnc/. Adgangskodens længde kan være mellem 6 og 8 tegn (ekstra trimmes). Om nødvendigt kan der også angives en adgangskode kun til visning, det vil sige uden adgang til tastatur og mus. Følgende kommandoer udføres på vegne af brugeren vnc:

su - vnc
vncserver -localhost no

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04
Som standard bruger RFB-protokollen et interval af TCP-porte fra 5900 til 5906 — dette er de såkaldte display-porte, hvor hver svarer til en X-server-skærm. Portene er forbundet med skærme fra :0 til :6. Den VNC-server, vi har startet, lytter på port 5901 (skærm :1). Andre instanser kan køre på andre porte med skærme :2, :3 osv. Før vi fortsætter med konfigurationen, skal vi stoppe serveren:

vncserver -kill :1

Kommandoen skal vise en besked som: «Killer Xtigervnc process ID 18105… success!».

Når TigerVNC startes, udfører den scriptet ~/.vnc/xstartup for at konfigurere indstillingerne. Lad os oprette vores eget script og skrive en backup af det eksisterende, hvis det findes:

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

XFCE desktop-miljøsessionen startes med følgende xstartup-script:

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

Kommandoen xrdb er nødvendig for, at VNC-systemet kan læse filen .Xresources i hjemmebiblioteket. Her kan brugeren definere forskellige indstillinger for den grafiske arbejdsstation: skriftrendering, terminalfarver, markørtemaer osv. Scriptet skal gøres udførbart:

chmod 755 ~/.vnc/xstartup

Konfigurationen af VNC-serveren er nu afsluttet. Hvis du starter den med kommandoen vncserver -localhost no (på vegne af brugeren vnc), kan du forbinde med den adgangskode, der blev angivet tidligere, og se følgende billede:

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

Start af tjenesten via systemd

Manuel start af VNC-serveren er ikke velegnet til produktionsbrug, så vi vil konfigurere en systemtjeneste. Kommandoerne køres som root (vi bruger sudo). Først opretter vi en ny enhedsfil til vores server:

sudo nano /etc/systemd/system/vncserver@.service

Symbolet @ i navnet gør det muligt at sende et argument til konfigurationen af tjenesten. I vores tilfælde angiver det portnummeret for VNC-displayet. Enhedsfilen består af flere sektioner:

[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

Derefter skal vi informere systemd om, at den nye fil er tilgængelig og aktivere den:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

Tallet 1 i navnet angiver skærmnummeret.

Vi stopper VNC-serveren, starter den som en tjeneste og tjekker status:

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

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

Hvis tjenesten kører, skal vi få et resultat, der ligner dette.

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

Forbindelse til arbejdsbordet

Vores konfiguration bruger ikke kryptering, så netværkspakker kan blive opsnappet af ondsindede aktører. Desuden findes der ofte sårbarheder, så det er ikke sikkert at åbne dem for adgang fra internettet. For sikker forbindelse på den lokale computer skal trafik pakkes i en SSH-tunnel, og derefter skal VNC-klienten konfigureres. På Windows kan man bruge en grafisk SSH-klient (for eksempel PuTTY). For at sikre, at TigerVNC kun lytter på localhost og ikke er tilgængelig direkte fra offentlige netværk:


sudo netstat -ap |more

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04
I Linux, FreeBSD, OS X og andre UNIX-lignende OS'er laves tunnelen fra klientcomputeren ved hjælp af ssh-værktøjet (sshd skal være aktiv på VNC-serveren):

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

Option -L binder port 5901 for den fjerne forbindelse til port 5901 på localhost. Option -C aktiverer komprimering, og -N fortæller ssh-værktøjet, at der ikke er behov for at udføre en fjernkommando. Option -l angiver login for den fjerne adgang.

Når tunnelen er konfigureret på den lokale computer, skal VNC-klienten startes, og der skal oprettes forbindelse til værten 127.0.0.1:5901 (localhost:5901) ved hjælp af den tidligere angivne adgangskode til VNC-serveren. Nu kan vi sikkert interagere gennem en krypteret tunnel med XFCE-skrivebordsgrænsefladen på VPS. På skærmbilledet i terminalemulatoren kører værktøjet top for at vise det begrænsede ressourceforbrug fra den virtuelle maskine. Alt derfra afhænger af brugerapplikationerne.

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04
Det er muligt at installere og konfigurere en VNC-server i Linux på næsten enhver VPS. Det kræver ikke dyre og ressourcekrævende konfigurationer med videoadapteremulering eller køb af kommercielle licenser til software. Udover den systemtjeneste vi har set på, findes der andre muligheder: at starte i dæmonmodus (gennem /etc/rc.local) ved systemstart eller efter behov via inetd. Sidstnævnte er interessant til oprettelse af flerbrugerkonfigurationer. Internet-superserveren vil starte VNC-serveren og forbinde den til klienten, og VNC-serveren opretter en ny skærm og starter en session. Til autentificering inden for den kan man bruge en grafisk display manager (for eksempel, LightDM), og når klienten logger af, vil sessionen blive lukket, og alle programmer, der kørte på skærmen, vil blive afsluttet.

VPS på Linux med grafisk interface: vi opsætter VNC-server på Ubuntu 18.04

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster