VPS на Linux з графічным інтэрфейсам: запускаем сервер VNC на Ubuntu 18.04

VPS на Linux з графічным інтэрфейсам: запускаем сервер VNC на Ubuntu 18.04
Некаторыя карыстачы арандуюць адносна недарагія VPS з Windows для запуску сэрвісу выдаленых працоўных сталоў. Тое ж самае можна зрабіць і на Linux без размяшчэння ў датацэнтры ўласнага жалеза ці арэнды выдзеленага сервера. Камусьці патрэбна звыклае графічнае асяроддзе для тэстаў і распрацоўкі або выдалены дэсктоп з шырокім каналам для працы з мабільных прылад. Ёсць маса варыянтаў ужывання заснаванай на пратаколе Remote FrameBuffer (RFB) сістэмы Virtual Network Computing (VNC). У невялікім артыкуле мы раскажам, як наладзіць яе на віртуальнай машыне з любым гіпервізарам.

змест:

Выбар сервера 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

Каманда павінна вывесці прыкладна такое паведамленне: Killing Xtigervnc process ID 18105… success!

Пры запуску 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 (на серверы 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 задае login для выдаленага ўваходу ў сістэму.

Пасля налады тунэля на лакальным кампутары неабходна запусціць кліент 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

Дадаць каментар