Noen brukere leier relativt billig VPS med Windows for å kjøre eksterne skrivebordstjenester. Det samme kan gjøres på Linux uten å være vert for din egen maskinvare i et datasenter eller leie en dedikert server. Noen mennesker trenger et kjent grafisk miljø for testing og utvikling, eller et eksternt skrivebord med en bred kanal for arbeid fra mobile enheter. Det er mange alternativer for å bruke Remote FrameBuffer (RFB) protokollbasert Virtual Network Computing (VNC) system. I denne korte artikkelen vil vi fortelle deg hvordan du konfigurerer den på en virtuell maskin med en hvilken som helst hypervisor.
Bekreftelse:
Velge en VNC-server
VNC-tjenesten kan bygges inn i virtualiseringssystemet, og hypervisoren vil koble den til de emulerte enhetene og ingen ekstra konfigurasjon vil være nødvendig. Dette alternativet innebærer betydelig overhead og støttes ikke av alle leverandører - selv i en mindre ressurskrevende implementering, når i stedet for å emulere en ekte grafikkenhet, overføres en forenklet abstraksjon (framebuffer) til den virtuelle maskinen. Noen ganger er en VNC-server knyttet til en kjørende X-server, men denne metoden er mer egnet for å få tilgang til en fysisk maskin, og på en virtuell skaper den en rekke tekniske problemer. Den enkleste måten å installere en VNC-server på er med en innebygd X-server. Den krever ikke fysiske enheter (videoadapter, tastatur og mus) eller emulering av dem ved hjelp av en hypervisor, og er derfor egnet for alle typer VPS.
Installasjon og konfigurasjon
Vi trenger en virtuell maskin med Ubuntu Server 18.04 LTS i standardkonfigurasjonen. Det er flere VNC-servere i standardlagrene for denne distribusjonen:
Installasjon av skrivebordsmiljøet med alle avhengigheter gjøres med følgende kommando:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Deretter må du installere VNC-serveren:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Å kjøre den som superbruker er en dårlig idé. Opprett en bruker og gruppe:
sudo adduser vnc
La oss legge brukeren til sudo-gruppen slik at han kan utføre administrasjonsrelaterte oppgaver. Hvis det ikke er et slikt behov, kan du hoppe over dette trinnet:
sudo gpasswd -a vnc sudo
Det neste trinnet er å kjøre VNC-serveren med vnc-brukerprivilegier for å lage et sikkert passord og konfigurasjonsfiler i ~/.vnc/-katalogen. Passordlengden kan være fra 6 til 8 tegn (ekstra tegn kuttes av). Om nødvendig settes det også et passord for kun visning, dvs. uten tilgang til tastatur og mus. Følgende kommandoer utføres som vnc-brukeren:
su - vnc
vncserver -localhost no
Som standard bruker RFB-protokollen TCP-portområdet fra 5900 til 5906 - dette er den såkalte. skjermporter, som hver tilsvarer en X-serverskjerm. I dette tilfellet er portene knyttet til skjermer fra :0 til :6. VNC-serverforekomsten vi lanserte lytter til port 5901 (skjerm: 1). Andre instanser kan fungere på andre porter med skjermer :2, :3 osv. Før videre konfigurasjon må du stoppe serveren:
vncserver -kill :1
Kommandoen skal vise noe sånt som dette: "Killing Xtigervnc process ID 18105... success!"
Når TigerVNC starter, kjører den ~/.vnc/xstartup-skriptet for å konfigurere konfigurasjonsinnstillinger. La oss lage vårt eget skript, først lagre en sikkerhetskopi av det eksisterende, hvis det eksisterer:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
XFCE-skrivebordsmiljøøkten startes av følgende xstartup-skript:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
xrdb-kommandoen er nødvendig for at VNC skal lese .Xresources-filen i hjemmekatalogen. Der kan brukeren definere ulike grafiske skrivebordsinnstillinger: skriftgjengivelse, terminalfarger, markørtemaer, etc. Skriptet må gjøres kjørbart:
chmod 755 ~/.vnc/xstartup
Dette fullfører VNC-serveroppsettet. Hvis du kjører den med kommandoen vncserver -localhost no (som vnc-bruker), kan du koble til med det tidligere spesifiserte passordet og se følgende bilde:
Starte en tjeneste via systemd
Manuell start av en VNC-server er ikke egnet for kampbruk, så vi vil konfigurere en systemtjeneste. Kommandoene utføres som root (vi bruker sudo). Først, la oss lage en ny enhetsfil for serveren vår:
sudo nano /etc/systemd/system/[email protected]
@-symbolet i navnet lar deg sende et argument for å konfigurere tjenesten. I vårt tilfelle spesifiserer den VNC-skjermporten. Enhetsfilen består av flere seksjoner:
[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
Deretter må du varsle systemd om den nye filen og aktivere den:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Tallet 1 i navnet spesifiserer skjermnummeret.
Stopp VNC-serveren, start den som en tjeneste og sjekk statusen:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Hvis tjenesten kjører, bør vi få noe slikt.
Skrivebordstilkobling
Konfigurasjonen vår bruker ikke kryptering, så nettverkspakker kan bli fanget opp av angripere. I tillegg, i VNC-servere ganske ofte
sudo netstat -ap |more
I Linux, FreeBSD, OS X og andre UNIX-lignende operativsystemer lages en tunnel fra klientdatamaskinen ved å bruke ssh-verktøyet (sshd må kjøres på VNC-serveren):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Alternativet -L binder port 5901 til den eksterne tilkoblingen til port 5901 på lokal vert. Alternativet -C aktiverer komprimering, og -N-alternativet forteller ssh om ikke å utføre fjernkommandoen. Alternativet -l spesifiserer pålogging for ekstern pålogging.
Etter å ha satt opp tunnelen på den lokale datamaskinen, må du starte VNC-klienten og etablere en tilkobling til verten 127.0.0.1:5901 (localhost:5901), ved å bruke det tidligere spesifiserte passordet for å få tilgang til VNC-serveren. Vi kan nå kommunisere sikkert via en kryptert tunnel med XFCE grafiske skrivebordsmiljø på VPS. På skjermbildet kjører toppverktøyet i terminalemulatoren for å vise den virtuelle maskinens lave forbruk av dataressurser. Da vil alt avhenge av brukerapplikasjoner.
Du kan installere og konfigurere en VNC-server i Linux på nesten hvilken som helst VPS. Dette krever ikke dyre og ressurskrevende konfigurasjoner med videoadapteremulering eller kjøp av kommersielle programvarelisenser. I tillegg til systemtjenestealternativet vi vurderte, er det andre: start i daemon-modus (via /etc/rc.local) når systemet starter opp eller på forespørsel via inetd. Sistnevnte er interessant for å lage flerbrukerkonfigurasjoner. Internet Superserver vil starte VNC-serveren og koble klienten til den, og VNC-serveren vil opprette et nytt skjermbilde og starte økten. For å autentisere i den, kan du bruke en grafisk skjermbehandling (f.eks.
Kilde: www.habr.com