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

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

Съдържание:

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

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

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

Инсталиране и настройка

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

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). Първо създаваме нов unit файл за нашия сървър:

sudo nano /etc/systemd/system/vncserver@.service

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

[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 vncserver@1.service

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

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

# от имени пользователя 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 (на VNC сървера трябва да е стартиран sshd):

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. На скрийншота в терминалния емулятор е стартирана утилитата top, за да покаже незначителното потребление на ресурси от виртуалната машина. Оттук нататък всичко зависи от потребителските приложения.

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

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

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster