Alcuni utenti affittanu VPS relativamente prezzu cù Windows per eseguisce servizii di desktop remoti. U stessu pò esse fattu in Linux senza allughjà u vostru propiu hardware in un centru di dati o allughjendu un servitore dedicatu. Certi pirsuni anu bisognu di un ambiente gràficu familiarizatu per a prova è u sviluppu, o un desktop remoto cun un largu canali per travaglià da i dispositi mobili. Ci hè parechje opzioni per utilizà u sistema di Virtual Network Computing (VNC) basatu in u protocolu Remote FrameBuffer (RFB). In questu brevi articulu vi diceremu cumu cunfigurà in una macchina virtuale cù qualsiasi ipervisore.
Table di cuntenutu:
Selezzione di un Servitore VNC
U serviziu VNC pò esse integratu in u sistema di virtualizazione, è l'ipervisore u cunnetta cù i dispositi emulati è ùn serà micca necessariu cunfigurazione supplementaria. Questa opzione implica un overhead significativu è ùn hè micca supportatu da tutti i fornituri - ancu in una implementazione menu intensiva di risorse, quandu invece di emulà un veru dispositivu graficu, una astrazione simplificata (framebuffer) hè trasferita à a macchina virtuale. A volte un servitore VNC hè ligatu à un servitore X in esecuzione, ma stu metudu hè più adattatu per accede à una macchina fisica, è nantu à una virtuale crea una quantità di difficultà tecniche. U modu più faciule per installà un servitore VNC hè cun un servitore X integratu. Ùn hè micca bisognu di dispositi fisici (adattatore video, teclatu è mouse) o a so emulazione cù un hypervisor, è per quessa hè adattatu per ogni tipu di VPS.
Stallazione è cunfigurazione
Avemu bisognu di una macchina virtuale cù Ubuntu Server 18.04 LTS in a so cunfigurazione predeterminata. Ci sò parechji servitori VNC in i repositori standard di sta distribuzione:
L'installazione di l'ambiente di u desktop cù tutte e dipendenze hè fatta cù u cumandimu seguente:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Dopu avete bisognu di stallà u servitore VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Eseguisce cum'è superuser hè una mala idea. Crea un utilizatore è un gruppu:
sudo adduser vnc
Aghjunghjite l'utilizatore à u gruppu sudo per ch'ellu possa eseguisce attività amministrative. Se ùn ci hè micca bisognu, pudete saltà stu passu:
sudo gpasswd -a vnc sudo
U prossimu passu hè di eseguisce u servitore VNC cù privilegi d'utilizatore vnc per creà una password sicura è i schedarii di cunfigurazione in u repertoriu ~/.vnc/. A lunghezza di a password pò esse da 6 à 8 caratteri (i caratteri extra sò tagliati). Se necessariu, una password hè ancu stabilita per a visualizazione solu, i.e. senza accessu à u teclatu è u mouse. I seguenti cumandamenti sò eseguiti cum'è l'utilizatore vnc:
su - vnc
vncserver -localhost no
Per automaticamente, u protokollu RFB usa a gamma di u portu TCP da 5900 à 5906 - questu hè cusì chjamatu. i porti di visualizazione, ognunu currisponde à una schermu di u servitore X. In questu casu, i porti sò assuciati cù schermi da : 0 à : 6. L'istanza di u servitore VNC chì avemu lanciatu ascolta u portu 5901 (schermu: 1). Altri casi ponu travaglià in altri porti cù schermi :2, :3, etc. Prima di più cunfigurazione, avete bisognu di piantà u servitore:
vncserver -kill :1
U cumandimu duveria vede qualcosa cum'è questu: "Uccidendu l'ID di prucessu Xtigervnc 18105... successu!"
Quandu TigerVNC principia, eseguisce u script ~/.vnc/xstartup per cunfigurà i paràmetri di cunfigurazione. Creemu u nostru propiu script, salvendu prima una copia di salvezza di quella esistente, s'ellu esiste:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
A sessione di l'ambiente di desktop XFCE hè iniziata da u seguente script xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
U cumandamentu xrdb hè necessariu per VNC per leghje u schedariu .Xresources in u cartulare di casa. Quì l'utilizatore pò definisce diverse paràmetri di u desktop graficu: rendering di font, culori di terminal, temi di cursore, etc. U script deve esse fattu eseguibile:
chmod 755 ~/.vnc/xstartup
Questu cumpleta a configurazione di u servitore VNC. Se l'eseguite cù u cumandamentu vncserver -localhost no (cum'è l'utilizatore vnc), pudete cunnette cù a password specificata prima è vede a seguente stampa:
Cumincià un serviziu via systemd
Cumincià manualmente un servitore VNC ùn hè micca adattatu per l'usu di cummattimentu, cusì cunfiguremu un serviziu di sistema. I cumandamenti sò eseguiti cum'è root (usemu sudo). Prima, creemu un novu schedariu di unità per u nostru servitore:
sudo nano /etc/systemd/system/[email protected]
U simbulu @ in u nome permette di passà un argumentu per cunfigurà u serviziu. In u nostru casu, specifica u portu di visualizazione VNC. U schedariu di unità hè custituitu da parechje sezioni:
[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
Allora avete bisognu di avvisà Systemd nantu à u novu schedariu è attivà:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
U numeru 1 in u nome specifica u numeru di screnu.
Arresta u servitore VNC, principià cum'è serviziu è verificate u statutu:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Se u serviziu hè in esecuzione, duvemu avè qualcosa cusì.
Cunnessione Desktop
A nostra cunfigurazione ùn usa micca a criptografia, cusì i pacchetti di rete ponu esse interceptati da l'attaccanti. Inoltre, in i servitori VNC abbastanza spessu
sudo netstat -ap |more
In Linux, FreeBSD, OS X è altri OS-like UNIX, un tunnel da l'urdinatore cliente hè fattu cù l'utilità ssh (sshd deve esse in esecuzione nantu à u servitore VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
L'opzione -L unisce u portu 5901 di a cunnessione remota à u portu 5901 in u locale host. L'opzione -C permette a cumpressione, è l'opzione -N dice à ssh di ùn eseguisce micca u cumandamentu remotu. L'opzione -l specifica u login per u login remoto.
Dopu avè stallatu u tunelu nantu à l'urdinatore lucale, avete bisognu di lancià u cliente VNC è stabilisce una cunnessione à l'ospite 127.0.0.1:5901 (localhost:5901), utilizendu a password previamente specificata per accede à u servitore VNC. Pudemu avà cumunicà in modu sicuru per via di un tunnel criptatu cù l'ambiente di desktop graficu XFCE in u VPS. In a screenshot, l'utilità superiore hè in esecuzione in l'emulatore di terminal per mostrà u bassu cunsumu di risorse informatiche di a macchina virtuale. Allora tuttu dependerà di l'applicazioni di l'utilizatori.
Pudete installà è cunfigurà un servitore VNC in Linux in quasi ogni VPS. Questu ùn hè micca bisognu di cunfigurazioni caru è intensivi di risorse cù l'emulazione di l'adattatore video o l'acquistu di licenze di software cummerciale. In più di l'opzione di serviziu di u sistema chì avemu cunsideratu, ci sò altri: lanciari in modu daemon (via /etc/rc.local) quandu u sistema boots o nantu à dumanda via inetd. L'ultime hè interessante per creà cunfigurazioni multi-utilizatori. L'Internet Superserver hà da inizià u servitore VNC è cunnette u cliente à questu, è u servitore VNC creà una nova schermu è inizià a sessione. Per autentificà in ellu, pudete aduprà un gestore di visualizazione grafica (per esempiu,
Source: www.habr.com