Vissa användare hyr relativt billig VPS med Windows för att köra en fjärrskrivbordstjänst. Detsamma kan göras på Linux utan att placera din egen hårdvara i datacentret eller hyra en dedikerad server. Någon behöver en bekant grafisk miljö för testning och utveckling, eller ett fjärrskrivbord med en bred kanal för att arbeta från mobila enheter. Det finns många applikationer för Remote FrameBuffer (RFB) protokollbaserade Virtual Network Computing (VNC) system. I en kort artikel kommer vi att berätta hur du ställer in det i en virtuell maskin med vilken hypervisor som helst.
Innehållsförteckning:
Att välja en VNC-server
VNC-tjänsten kan byggas in i virtualiseringssystemet, medan hypervisorn associerar den med de emulerade enheterna och ingen ytterligare konfiguration krävs. Det här alternativet innebär betydande overhead och stöds inte av alla leverantörer - även i en mindre resurskrävande implementering, när istället för att emulera en riktig grafikenhet, skickas en förenklad abstraktion (framebuffer) till den virtuella maskinen. Ibland är VNC-servern bunden till en körande X-server, men denna metod är mer lämpad för att komma åt en fysisk maskin, och på en virtuell maskin skapar den ett antal tekniska svårigheter. Det är enklast att installera en VNC-server med en inbyggd X-server. Det kräver inte närvaron av fysiska enheter (videoadapter, tangentbord och mus) eller deras emulering med hjälp av en hypervisor, och är därför lämplig för alla typer av VPS.
Installation och konfiguration
Vi kommer att behöva en virtuell maskin med Ubuntu Server 18.04 LTS i standardkonfigurationen. Det finns flera VNC-servrar i standardförråden för denna distribution:
Installation av skrivbordsmiljön med alla beroenden görs med följande kommando:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Därefter måste du installera VNC-servern:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Att köra det som root är en dålig idé. Skapa användare och grupp:
sudo adduser vnc
Låt oss lägga till användaren i sudo-gruppen så att han kan utföra administrationsrelaterade uppgifter. Om det inte finns något sådant behov kan det här steget hoppas över:
sudo gpasswd -a vnc sudo
Nästa steg är att starta VNC-servern med vnc-användarrättigheter för att skapa ett säkert lösenord och konfigurationsfiler i katalogen ~/.vnc/. Lösenordslängden kan vara från 6 till 8 tecken (extra tecken är avskurna). Vid behov sätts även ett visningslösenord, dvs. utan åtkomst till tangentbord och mus. Följande kommandon körs som vnc-användaren:
su - vnc
vncserver -localhost no
Som standard använder RFB-protokollet TCP-portintervallet från 5900 till 5906 - detta är det så kallade. displayportar, som var och en motsvarar en X-serverskärm. Portarna är associerade med skärmarna :0 till :6. VNC-serverinstansen vi startade lyssnar på port 5901 (skärm :1). Andra instanser kan köras på andra portar med skärmar :2, :3, etc. Stoppa servern innan ytterligare konfiguration:
vncserver -kill :1
Kommandot bör visa ungefär så här: "Killing Xtigervnc process ID 18105… success!".
Vid uppstart kör TigerVNC ~/.vnc/xstartup-skriptet för att ställa in konfigurationsalternativ. Låt oss skapa vårt eget skript, efter att ha sparat en säkerhetskopia av det befintliga, om det finns:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
En XFCE-skrivbordsmiljösession 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 krävs för att VNC-systemet ska kunna läsa .Xresources-filen i hemkatalogen. Där kan användaren definiera olika alternativ för det grafiska skrivbordet: teckensnittsrendering, terminalfärger, markörteman och så vidare. Skriptet måste göras körbart:
chmod 755 ~/.vnc/xstartup
Detta slutför VNC-serverinstallationen. Om du kör det med kommandot vncserver -localhost no (som vnc-användare), kan du ansluta med lösenordet du angav tidigare och se följande bild:
Starta en tjänst via systemd
Att manuellt starta VNC-servern är inte väl lämpat för stridsanvändning, så vi kommer att sätta upp en systemtjänst. Kommandon körs som root (med sudo). Låt oss först skapa en ny enhetsfil för vår server:
sudo nano /etc/systemd/system/[email protected]
Tecknet @ i namnet låter dig skicka ett argument för att konfigurera tjänsten. I vårt fall specificerar den VNC-displayporten. 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
Sedan måste du meddela systemd om den nya filen och aktivera den:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Siffran 1 i namnet anger skärmnumret.
Stoppa VNC-servern, starta den som en tjänst och kontrollera statusen:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Om tjänsten är igång borde vi få något liknande.
Skrivbordsanslutning
Vår konfiguration använder inte kryptering, så nätverkspaket kan fångas upp av inkräktare. Dessutom i VNC-servrar ganska ofta
sudo netstat -ap |more
På Linux, FreeBSD, OS X och andra UNIX-liknande operativsystem görs en tunnel från en klientdator med hjälp av ssh-verktyget (sshd måste köras på VNC-servern):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Alternativet -L binder port 5901 på fjärranslutningen till port 5901 på localhost. Alternativet -C möjliggör komprimering och -N säger åt ssh-verktyget att inte köra fjärrkommandot. Alternativet -l anger inloggning för fjärrinloggning.
Efter att ha ställt in tunneln på den lokala datorn måste du starta VNC-klienten och upprätta en anslutning till värden 127.0.0.1:5901 (localhost:5901) med det tidigare inställda lösenordet för att komma åt VNC-servern. Nu kan vi kommunicera säkert genom en krypterad tunnel med XFCE:s grafiska skrivbordsmiljö på VPS. På skärmdumpen körs toppverktyget i terminalemulatorn för att visa den virtuella maskinens ljusförbrukning av datorresurser. Vidare kommer allt att bero på användarapplikationer.
Du kan installera och konfigurera en VNC-server i Linux på nästan vilken VPS som helst. Det kräver inte dyra och resurskrävande konfigurationer med videoadapteremulering eller köp av kommersiella programvarulicenser. Utöver systemtjänstalternativet som vi har övervägt, finns det andra: körs i demonläge (via /etc/rc.local) vid systemstart eller på begäran via inetd. Det senare är intressant för att skapa fleranvändarkonfigurationer. Internet-superservern kommer att starta VNC-servern och ansluta klienten till den, och VNC-servern kommer att skapa en ny skärm och starta sessionen. För att autentisera inuti den kan du använda en grafisk displayhanterare (t.ex.
Källa: will.com