Alguns usuaris lloguen un VPS relativament econòmic amb Windows per executar serveis d'escriptori remot. El mateix es pot fer a Linux sense allotjar el vostre propi maquinari en un centre de dades o llogar un servidor dedicat. Algunes persones necessiten un entorn gràfic familiar per a proves i desenvolupament, o un escriptori remot amb un ampli canal per treballar des de dispositius mòbils. Hi ha moltes opcions per utilitzar el sistema Virtual Network Computing (VNC) basat en el protocol Remote FrameBuffer (RFB). En aquest breu article us explicarem com configurar-lo en una màquina virtual amb qualsevol hipervisor.
Taula de continguts:
Selecció d'un servidor VNC
El servei VNC es pot incorporar al sistema de virtualització i l'hipervisor el connectarà amb els dispositius emulats i no caldrà cap configuració addicional. Aquesta opció implica una sobrecàrrega important i no és compatible amb tots els proveïdors, fins i tot en una implementació que consumeix menys recursos, quan en comptes d'emular un dispositiu gràfic real, es transfereix una abstracció simplificada (framebuffer) a la màquina virtual. De vegades, un servidor VNC està vinculat a un servidor X en execució, però aquest mètode és més adequat per accedir a una màquina física, i en una virtual crea una sèrie de dificultats tècniques. La manera més senzilla d'instal·lar un servidor VNC és amb un servidor X integrat. No requereix dispositius físics (adaptador de vídeo, teclat i ratolí) ni la seva emulació mitjançant un hipervisor, i per tant és apte per a qualsevol tipus de VPS.
Instal·lació i configuració
Necessitarem una màquina virtual amb Ubuntu Server 18.04 LTS en la seva configuració per defecte. Hi ha diversos servidors VNC als repositoris estàndard d'aquesta distribució:
La instal·lació de l'entorn d'escriptori amb totes les dependències es fa amb l'ordre següent:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
A continuació, heu d'instal·lar el servidor VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Fer-lo funcionar com a superusuari és una mala idea. Crea un usuari i un grup:
sudo adduser vnc
Afegim l'usuari al grup sudo perquè pugui realitzar tasques relacionades amb l'administració. Si no és necessari, podeu ometre aquest pas:
sudo gpasswd -a vnc sudo
El següent pas és executar el servidor VNC amb privilegis d'usuari vnc per crear una contrasenya segura i fitxers de configuració al directori ~/.vnc/. La longitud de la contrasenya pot ser de 6 a 8 caràcters (els caràcters addicionals es tallen). Si cal, també s'estableix una contrasenya només per a la visualització, és a dir. sense accés al teclat i al ratolí. Les ordres següents s'executen com a usuari vnc:
su - vnc
vncserver -localhost no
De manera predeterminada, el protocol RFB utilitza l'interval de ports TCP de 5900 a 5906, això és l'anomenat. ports de visualització, cadascun corresponent a una pantalla de servidor X. En aquest cas, els ports estan associats a pantalles de :0 a :6. La instància del servidor VNC que vam llançar escolta el port 5901 (pantalla: 1). Altres instàncies poden funcionar en altres ports amb pantalles :2, :3, etc. Abans d'una altra configuració, heu d'aturar el servidor:
vncserver -kill :1
L'ordre hauria de mostrar alguna cosa com això: "Mata l'ID de procés Xtigervnc 18105... èxit!"
Quan TigerVNC s'inicia, executa l'script ~/.vnc/xstartup per configurar els paràmetres de configuració. Creem el nostre propi script, primer desem una còpia de seguretat de l'existent, si existeix:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
La sessió de l'entorn d'escriptori XFCE s'inicia amb l'script xstartup següent:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
L'ordre xrdb és necessària perquè VNC llegeixi el fitxer .Xresources al directori d'inici. Allà l'usuari pot definir diversos paràmetres gràfics d'escriptori: representació de fonts, colors de terminal, temes de cursor, etc. L'script s'ha de fer executable:
chmod 755 ~/.vnc/xstartup
Això completa la configuració del servidor VNC. Si l'executeu amb l'ordre vncserver -localhost no (com a usuari vnc), podeu connectar-vos amb la contrasenya especificada anteriorment i veure la imatge següent:
Inici d'un servei mitjançant systemd
L'inici manual d'un servidor VNC no és adequat per a l'ús de combat, així que configurarem un servei del sistema. Les ordres s'executen com a root (utilitzem sudo). Primer, creem un fitxer d'unitat nou per al nostre servidor:
sudo nano /etc/systemd/system/[email protected]
El símbol @ al nom us permet passar un argument per configurar el servei. En el nostre cas, especifica el port de visualització VNC. El fitxer de la unitat consta de diverses seccions:
[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
Aleshores, heu de notificar a systemd sobre el nou fitxer i activar-lo:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
El número 1 del nom especifica el número de pantalla.
Atureu el servidor VNC, inicieu-lo com a servei i comproveu l'estat:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Si el servei s'està executant, hauríem d'obtenir alguna cosa com això.
Connexió a l'escriptori
La nostra configuració no utilitza xifratge, de manera que els paquets de xarxa poden ser interceptats pels atacants. A més, als servidors VNC amb força freqüència
sudo netstat -ap |more
A Linux, FreeBSD, OS X i altres sistemes operatius semblants a UNIX, es fa un túnel des de l'ordinador client mitjançant la utilitat ssh (sshd s'ha d'executar al servidor VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
L'opció -L enllaça el port 5901 de la connexió remota al port 5901 del localhost. L'opció -C permet la compressió i l'opció -N diu a ssh que no executi l'ordre remota. L'opció -l especifica l'inici de sessió per a l'inici de sessió remot.
Després de configurar el túnel a l'ordinador local, heu d'iniciar el client VNC i establir una connexió amb l'amfitrió 127.0.0.1:5901 (localhost:5901), utilitzant la contrasenya especificada anteriorment per accedir al servidor VNC. Ara ens podem comunicar de manera segura mitjançant un túnel xifrat amb l'entorn d'escriptori gràfic XFCE al VPS. A la captura de pantalla, la utilitat superior s'està executant a l'emulador de terminal per mostrar el baix consum de recursos informàtics de la màquina virtual. Aleshores, tot dependrà de les aplicacions dels usuaris.
Podeu instal·lar i configurar un servidor VNC a Linux a gairebé qualsevol VPS. Això no requereix configuracions cares i intensives en recursos amb emulació d'adaptadors de vídeo o la compra de llicències de programari comercial. A més de l'opció de servei del sistema que hem considerat, n'hi ha d'altres: llançar-se en mode dimoni (a través de /etc/rc.local) quan el sistema s'engega o sota demanda mitjançant inetd. Aquest últim és interessant per crear configuracions multiusuari. El Superservidor d'Internet iniciarà el servidor VNC i connectarà el client amb ell, i el servidor VNC crearà una nova pantalla i iniciarà la sessió. Per autenticar-s'hi, podeu utilitzar un gestor de visualització gràfic (per exemple,
Font: www.habr.com