Някои потребители наемат сравнително евтин VPS с Windows, за да изпълняват услуги за отдалечен работен плот. Същото може да се направи на Linux, без да хоствате собствен хардуер в център за данни или да наемате специален сървър. Някои хора се нуждаят от позната графична среда за тестване и разработка или отдалечен работен плот с широк канал за работа от мобилни устройства. Има много опции за използване на системата за виртуална мрежа (VNC), базирана на протокол Remote FrameBuffer (RFB). В тази кратка статия ще ви кажем как да го конфигурирате на виртуална машина с всеки хипервизор.
Съдържание:
Избор на VNC сървър
VNC услугата може да бъде вградена в системата за виртуализация, а хипервайзорът ще я свърже с емулираните устройства и няма да е необходима допълнителна конфигурация. Тази опция включва значителни разходи и не се поддържа от всички доставчици - дори при по-малко ресурсоемка реализация, когато вместо емулиране на реално графично устройство, опростена абстракция (framebuffer) се прехвърля към виртуалната машина. Понякога VNC сървър е свързан с работещ X сървър, но този метод е по-подходящ за достъп до физическа машина, а на виртуална създава редица технически затруднения. Най-лесният начин да инсталирате VNC сървър е с вграден X сървър. Не изисква физически устройства (видео адаптер, клавиатура и мишка) или тяхната емулация с помощта на хипервайзор и следователно е подходящ за всеки тип VPS.
Инсталиране и конфигуриране
Ще ни трябва виртуална машина с Ubuntu Server 18.04 LTS в конфигурацията по подразбиране. Има няколко VNC сървъра в стандартните хранилища на тази дистрибуция:
Инсталирането на работната среда с всички зависимости се извършва със следната команда:
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
Нека добавим потребителя към групата sudo, за да може да изпълнява задачи, свързани с администриране. Ако няма такава нужда, можете да пропуснете тази стъпка:
sudo gpasswd -a vnc sudo
Следващата стъпка е да стартирате VNC сървъра с vnc потребителски привилегии, за да създадете защитена парола и конфигурационни файлове в директорията ~/.vnc/. Дължината на паролата може да бъде от 6 до 8 знака (допълнителните знаци се отрязват). При необходимост се задава и парола само за гледане, т.е. без достъп до клавиатура и мишка. Следните команди се изпълняват като vnc потребител:
su - vnc
vncserver -localhost no
По подразбиране протоколът 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), можете да се свържете с предварително зададената парола и да видите следната снимка:
Стартиране на услуга чрез 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
Ако услугата работи, трябва да получим нещо подобно.
Връзка с работен плот
Нашата конфигурация не използва криптиране, така че мрежовите пакети могат да бъдат прихванати от нападатели. В допълнение, във VNC сървърите доста често
sudo netstat -ap |more
В 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. На екранната снимка горната помощна програма работи в терминалния емулатор, за да покаже ниската консумация на изчислителни ресурси от виртуалната машина. Тогава всичко ще зависи от потребителските приложения.
Можете да инсталирате и конфигурирате VNC сървър в Linux на почти всеки VPS. Това не изисква скъпи и ресурсоемки конфигурации с емулация на видео адаптер или закупуване на лицензи за търговски софтуер. В допълнение към опцията за системна услуга, която разгледахме, има и други: стартиране в режим на демон (чрез /etc/rc.local), когато системата се зарежда или при поискване чрез inetd. Последното е интересно за създаване на многопотребителски конфигурации. Интернет суперсървърът ще стартира VNC сървъра и ще свърже клиента към него, а VNC сървърът ще създаде нов екран и ще започне сесията. За да се удостоверите в него, можете да използвате графичен мениджър на дисплея (напр.
Източник: www.habr.com