VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04
Някои потребители наемат сравнително евтин VPS с Windows, за да изпълняват услуги за отдалечен работен плот. Същото може да се направи на Linux, без да хоствате собствен хардуер в център за данни или да наемате специален сървър. Някои хора се нуждаят от позната графична среда за тестване и разработка или отдалечен работен плот с широк канал за работа от мобилни устройства. Има много опции за използване на системата за виртуална мрежа (VNC), базирана на протокол Remote FrameBuffer (RFB). В тази кратка статия ще ви кажем как да го конфигурирате на виртуална машина с всеки хипервизор.

Съдържание:

Избор на VNC сървър
Инсталиране и конфигуриране
Стартиране на услуга чрез systemd
Връзка с работен плот

Избор на VNC сървър

VNC услугата може да бъде вградена в системата за виртуализация, а хипервайзорът ще я свърже с емулираните устройства и няма да е необходима допълнителна конфигурация. Тази опция включва значителни разходи и не се поддържа от всички доставчици - дори при по-малко ресурсоемка реализация, когато вместо емулиране на реално графично устройство, опростена абстракция (framebuffer) се прехвърля към виртуалната машина. Понякога VNC сървър е свързан с работещ X сървър, но този метод е по-подходящ за достъп до физическа машина, а на виртуална създава редица технически затруднения. Най-лесният начин да инсталирате VNC сървър е с вграден X сървър. Не изисква физически устройства (видео адаптер, клавиатура и мишка) или тяхната емулация с помощта на хипервайзор и следователно е подходящ за всеки тип VPS.

Инсталиране и конфигуриране

Ще ни трябва виртуална машина с Ubuntu Server 18.04 LTS в конфигурацията по подразбиране. Има няколко VNC сървъра в стандартните хранилища на тази дистрибуция: TightVNC, TigerVNC, x11vnc и други. Спряхме се на TigerVNC - текущо разклонение на TightVNC, което не се поддържа от разработчика. Настройката на други сървъри се извършва по подобен начин. Също така трябва да изберете среда на работния плот: оптималният вариант според нас би бил XFCE поради сравнително ниските изисквания за изчислителни ресурси. Тези, които желаят, могат да инсталират друг DE или WM: всичко зависи от личните предпочитания, но изборът на софтуер пряко влияе върху необходимостта от RAM и изчислителни ядра.

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

Инсталирането на работната среда с всички зависимости се извършва със следната команда:

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

След това трябва да инсталирате VNC сървъра:

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

Стартирането като суперпотребител е лоша идея. Създайте потребител и група:

sudo adduser vnc

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

Нека добавим потребителя към групата sudo, за да може да изпълнява задачи, свързани с администриране. Ако няма такава нужда, можете да пропуснете тази стъпка:

sudo gpasswd -a vnc sudo

Следващата стъпка е да стартирате VNC сървъра с vnc потребителски привилегии, за да създадете защитена парола и конфигурационни файлове в директорията ~/.vnc/. Дължината на паролата може да бъде от 6 до 8 знака (допълнителните знаци се отрязват). При необходимост се задава и парола само за гледане, т.е. без достъп до клавиатура и мишка. Следните команди се изпълняват като vnc потребител:

su - vnc
vncserver -localhost no

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04
По подразбиране протоколът RFB използва обхвата на TCP порта от 5900 до 5906 – това е т.нар. портове за показване, всеки от които съответства на екран на X сървър. В този случай портовете са свързани с екрани от :0 до :6. Екземплярът на VNC сървъра, който стартирахме, слуша порт 5901 (екран: 1). Други инстанции могат да работят на други портове с екрани :2, :3 и т.н. Преди по-нататъшна конфигурация трябва да спрете сървъра:

vncserver -kill :1

Командата трябва да покаже нещо подобно: „Убиване на Xtigervnc процес ID 18105... успех!“

Когато TigerVNC стартира, той изпълнява скрипта ~/.vnc/xstartup, за да конфигурира конфигурационните настройки. Нека създадем наш собствен скрипт, като първо запазим резервно копие на съществуващия, ако съществува:

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

Сесията на работната среда XFCE се стартира от следния xstartup скрипт:

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

Командата xrdb е необходима, за да може VNC да прочете файла .Xresources в началната директория. Там потребителят може да дефинира различни настройки на графичния работен плот: изобразяване на шрифтове, цветове на терминала, теми на курсора и др. Скриптът трябва да бъде направен изпълним:

chmod 755 ~/.vnc/xstartup

Това завършва настройката на VNC сървъра. Ако го стартирате с командата vncserver -localhost no (като потребител на vnc), можете да се свържете с предварително зададената парола и да видите следната снимка:

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

Стартиране на услуга чрез systemd

Ръчното стартиране на VNC сървър не е подходящо за бойна употреба, така че ще конфигурираме системна услуга. Командите се изпълняват като root (използваме sudo). Първо, нека създадем нов единичен файл за нашия сървър:

sudo nano /etc/systemd/system/[email protected]

Символът @ в името ви позволява да подадете аргумент за конфигуриране на услугата. В нашия случай той указва порта за VNC дисплей. Единичният файл се състои от няколко раздела:

[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

След това трябва да уведомите systemd за новия файл и да го активирате:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

Цифрата 1 в името указва номера на екрана.

Спрете VNC сървъра, стартирайте го като услуга и проверете състоянието:

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

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

Ако услугата работи, трябва да получим нещо подобно.

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

Връзка с работен плот

Нашата конфигурация не използва криптиране, така че мрежовите пакети могат да бъдат прихванати от нападатели. В допълнение, във VNC сървърите доста често открийте уязвимости, така че не трябва да ги отваряте за достъп от интернет. За да се свържете сигурно на вашия локален компютър, трябва да пакетирате трафика в SSH тунел и след това да конфигурирате VNC клиент. В Windows можете да използвате графичен SSH клиент (например PuTTY). За сигурност TigerVNC на сървъра слуша само localhost и не е директно достъпен от обществени мрежи:


sudo netstat -ap |more

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04
В Linux, FreeBSD, OS X и други UNIX-подобни операционни системи, тунелът от клиентския компютър се прави с помощта на помощната програма ssh (sshd трябва да работи на VNC сървъра):

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

Опцията -L свързва порт 5901 на отдалечената връзка с порт 5901 на localhost. Опцията -C позволява компресиране, а опцията -N казва на ssh да не изпълнява отдалечената команда. Опцията -l указва влизане за отдалечено влизане.

След като настроите тунела на локалния компютър, трябва да стартирате VNC клиента и да установите връзка с хост 127.0.0.1:5901 (localhost:5901), като използвате зададената преди това парола за достъп до VNC сървъра. Вече можем да комуникираме сигурно чрез криптиран тунел с графичната десктоп среда XFCE на VPS. На екранната снимка горната помощна програма работи в терминалния емулатор, за да покаже ниската консумация на изчислителни ресурси от виртуалната машина. Тогава всичко ще зависи от потребителските приложения.

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04
Можете да инсталирате и конфигурирате VNC сървър в Linux на почти всеки VPS. Това не изисква скъпи и ресурсоемки конфигурации с емулация на видео адаптер или закупуване на лицензи за търговски софтуер. В допълнение към опцията за системна услуга, която разгледахме, има и други: стартиране в режим на демон (чрез /etc/rc.local), когато системата се зарежда или при поискване чрез inetd. Последното е интересно за създаване на многопотребителски конфигурации. Интернет суперсървърът ще стартира VNC сървъра и ще свърже клиента към него, а VNC сървърът ще създаде нов екран и ще започне сесията. За да се удостоверите в него, можете да използвате графичен мениджър на дисплея (напр. LightDM), а след прекъсване на връзката с клиента сесията ще бъде затворена и всички програми, работещи с екрана, ще бъдат прекратени.

VPS на Linux с графичен интерфейс: стартиране на VNC сървър на Ubuntu 18.04

Източник: www.habr.com

Добавяне на нов коментар