VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04
Vissa användare hyr relativt billiga VPS med Windows för att köra en tjänst för fjärrskrivbord. Det går också att göra detta med Linux utan att behöva ha egen hårdvara i datacentret eller hyra en dedikerad server. Vissa behöver en välbekant grafisk miljö för tester och utveckling eller fjärrskrivbord med stor bandbredd för arbete från mobila enheter. Det finns massor av användningsområden för systemet Virtual Network Computing (VNC) som är baserat på protokollet Remote FrameBuffer (RFB). I denna artikel ska vi berätta hur man kan ställa in det på en virtuell maskin med vilken hypervisor som helst.

Innehåll:

Val av VNC-server
Installation och konfiguration
Starta tjänsten via systemd
Anslutning till skrivbordet

Val av VNC-server

VNC-tjänsten kan integreras i virtualiseringssystemet, där hypervisorn kopplar den till de emulerade enheterna och ingen ytterligare konfiguration behövs. Detta alternativ innebär betydande overhead och stöds inte av alla leverantörer — även i en mindre resurskrävande implementation, där en förenklad abstraktion (framebuffer) överförs till den virtuella maskinen istället för att emulera en riktig grafisk enhet. Ibland kopplas VNC-servern till en aktiv X-server, men detta sätt är mer lämpligt för åtkomst till en fysisk maskin, medan det skapar ett antal tekniska utmaningar på en virtuell. Det enklaste är att installera en VNC-server med en inbyggd X-server. Den kräver inte att fysiska enheter (grafikkort, tangentbord och mus) finns eller emuleras med hjälp av hypervisorn, och passar därför för VPS av alla typer.

Installation och konfiguration

Vi kommer att behöva en virtuell maskin med Ubuntu Server 18.04 LTS i standardkonfiguration. I de officiella repositoryn för denna distribution finns flera VNC-servrar: TightVNC, TigerVNC, x11vnc och andra. Vi har valt TigerVNC - en aktuell fork av den icke-understödda TightVNC. Inställningen av andra servrar utförs på liknande sätt. Det krävs också att man väljer ett skrivbordsmiljö: vi anser att det optimala alternativet är XFCE på grund av de relativt låga kraven på datorkraft. De som vill kan installera en annan DE eller WM: här beror allt på personliga preferenser, men valet av programvara påverkar direkt behovet av RAM-minne och processorkärnor.

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

Installation av skrivbordsmiljön med alla beroenden utförs med följande kommando:

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

Därefter måste VNC-servern installeras:

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

Att köra den med superanvändarrättigheter är en dålig idé. Skapa en användare och en grupp:

sudo adduser vnc

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

Vi lägger till användaren i sudo-gruppen så att han kan hantera administrativa uppgifter. Om det inte finns något behov av detta kan detta steg hoppas över:

sudo gpasswd -a vnc sudo

Nästa steg är att starta VNC-servern med användarrättigheterna för vnc-användaren för att skapa ett säkert lösenord och konfigurationsfiler i katalogen ~/ .vnc/. Lösenordet kan vara mellan 6 och 8 tecken långt (överskott klipps av). Om nödvändigt kan ett endast visningslösenord sättas, det vill säga utan åtkomst till tangentbordet och musen. Följande kommandon utförs under användaren vnc:

su - vnc
vncserver -localhost no

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04
Som standard använder RFB-protokollet ett intervall av TCP-portar från 5900 till 5906 — detta kallas för displayerportar, där varje motsvarar en X-server skärm. Portarna är associerade med skärmar från :0 till :6. Den VNC-serverinstans vi har startat lyssnar på port 5901 (skärm :1). Andra instanser kan köras på andra portar med skärmar :2, :3 osv. Innan vidare konfiguration behöver servern stoppas:

vncserver -kill :1

Kommandot bör ge ett meddelande som ungefär lyder: "Killing Xtigervnc process ID 18105… success!".

Vid start av TigerVNC körs skriptet ~/ .vnc/ xstartup för att ställa in konfigurationsinställningar. Vi skapar vårt eget skript och gör en säkerhetskopia av det som finns, om det existerar:

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

XFCE-skrivbordsmiljön startas med följande xstartup-skript:

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

Kommandot xrdb är nödvändigt för att VNC-systemet ska läsa in .Xresources-filen i hemkatalogen. Här kan användaren definiera olika inställningar för det grafiska skrivbordet: rendering av tecken, terminalfärger, pekarteman osv. Skriptet måste göras körbart:

chmod 755 ~/ .vnc/ xstartup

Här slutförs konfigurationen av VNC-servern. Om den startas med kommandot vncserver -localhost no (under användaren vnc), kan man ansluta med det tidigare angivna lösenordet och se följande bild:

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

Starta tjänsten via systemd

Manuell start av VNC-servern är dålig för produktionsanvändning, så vi konfigurerar en systemtjänst. Kommandona utförs som root (använd sudo). Först skapar vi en ny enhetsfil för vår server:

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

Symbolen @ i namnet gör det möjligt att skicka ett argument för att konfigurera tjänsten. I vårt fall ställer det in porten för VNC-displayen. Enhetsfilen består av flera 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

Därefter måste vi meddela systemd om den nya filens existens och aktivera den:

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

Siffran 1 i namnet anger skärmens nummer.

Vi stoppar VNC-servern, startar den som en tjänst och kontrollerar status:

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

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

Om tjänsten är aktiv ska vi få ungefär det här resultatet.

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

Anslutning till skrivbordet

Vår konfiguration använder ingen kryptering, så nätverkspaket kan fångas av illvilliga aktörer. Dessutom hittar man ofta sårbarheter, så det är inte säkert att öppna dem för tillgång från internet. För en säker anslutning på den lokala datorn måste vi paketera trafiken i en SSH-tunnel och sedan konfigurera VNC-klienten. På Windows kan du använda en grafisk SSH-klient (t.ex. PuTTY). För säkerhet lyssnar TigerVNC på servern endast på localhost och är inte direkt tillgänglig från offentliga nätverk:


sudo netstat -ap |more

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04
I Linux, FreeBSD, OS X och andra UNIX-liknande operativsystem sker tunneln från klientdatorn med hjälp av ssh-verktyget (sshd måste vara aktivt på VNC-servern):

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

Optionen -L kopplar port 5901 för fjärranslutningen till port 5901 på localhost. Alternativet -C aktiverar komprimering, och -N talar om för ssh-verktyget att ingen fjärrkommando ska utföras. Alternativet -l ställer in inloggningen för fjärråtkomst.

När tunneln är konfigurerad på den lokala datorn måste VNC-klienten startas och en anslutning göras till värden 127.0.0.1:5901 (localhost:5901), med det tidigare angivna lösenordet för att få åtkomst till VNC-servern. Nu kan vi säkert interagera via en krypterad tunnel med XFCE-skrivbordsmiljön på VPS. På skärmdumpen i terminalemulatorn körs top-verktyget för att visa den minimala resursförbrukningen på den virtuella maskinen. Framtiden beror på användarapplikationerna.

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04
Att ställa in och konfigurera en VNC-server i Linux kan göras på praktiskt taget vilken VPS som helst. Det behövs ingen dyr och resurskrävande konfiguration med en videoadapter-emulator eller köp av kommersiella licenser för programvara. Utöver den metod vi har diskuterat finns det andra alternativ: starta i demonläge (via /etc/rc.local) vid systemstart eller på begäran via inetd. Den sista metoden är intressant för att skapa flermedlemskonfigurationer. Internet-superservern kommer att starta VNC-servern och koppla en klient till den, medan VNC-servern skapar en ny skärm och startar en session. För autentisering inuti sessionen kan man använda en grafisk displayhanterare (till exempel, LightDM), och efter att klienten kopplar bort kommer sessionen att stängas och alla program som körs på skärmen avslutas.

VPS på Linux med grafiskt gränssnitt: startar VNC-server på Ubuntu 18.04

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster