VNC для удаленного доступа к Ubuntu c оболочкой xfce4

В этом руководстве будет рассмотрен процесс настройки сервера VNC для осуществления удаленного управления виртуальными серверами под управлением операционной системы Ubuntu 16.04 x64.

Что это такое

VNC — широко распространенный способ удаленного управления рабочим столом компьютера по сети.

Установка VNC Server и рабочего окружения xfce4

Прежде всего следует обновить локальную базу пакетов:

sudo apt-get update

Далее установите пакеты из главного репозитория:

sudo apt-get install xfce4 xfce4-goodies tightvncserver xorg lightdm

Для завершения начальной конфигурации VNC-сервера выполните команду vncserver для установки пароля. Также будет предложено ввести “view-only” пароль для аутентификации только для просмотра. Пользователи, которые будут авторизованы с помощью “view-only” пароля, не смогут контролировать рабочий стол с помощью мыши или клавиатуры.

Настройка VNC Server

Во-первых, мы должны указать VNC серверу какие команды выполнять при запуске. Они находятся в файле ~/.vnc/xstartup. Сценарий запуска был создан на предыдущем шаге, но в нем нужно изменить некоторые команды для рабочего окружения Xfce.

Инициализация VNC сервера по умолчанию происходит на порт 5901, называемый “Порт дисплея” и упоминается как :1. VNC может запускать несколько экземпляров на других портах: :2, :3, и т.д.

Перед тем как приступить к изменениям настройки VNC сервера необходимо остановить экземпляр на порту 5901:

vncserver -kill :1 Создадим резервную копию сценария с помощью команды mv: mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Откройте файл в текстовом редакторе:

nano ~/.vnc/xstartup

Добавьте следующие строки:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Первая команда скрипта читает файл .Xresources пользователей сервера с настройками графики рабочего стола, вторая команда запускает графическое ПО.

Предоставим необходимое право на исполнение:

sudo chmod +x ~/.vnc/xstartup

Далее откройте файл /etc/init.d/vncserver в текстовом редакторе:

sudo nano /etc/init.d/vncserver

Добавьте следующий код, изменив значение параметра USER="user_name", на необходимое имя пользователя системы:

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="user_name"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

В первом блоке объявлены общие настройки, такие как имя пользователя, разрешение экрана и т.п.

Второй блок связывает VNC сервер и обратную связь.

Следующий блок позволяет немедленно убить существующий экземпляр сервера VNC.

Последний блок комбинирует предыдущие две команды (start/stop).

Предоставим необходимое право на исполнение скрипта:

sudo chmod +x /etc/init.d/vncserver

Проброс портов для возможности удаленного доступа:

iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
iptables-save

Добавим автоматический запуск при загрузке, перезапустим сервер и убьем запущенный при перезапуске рабочий стол, т. к. он не может быть доступен удаленно, а только локально:

sudo update-rc.d vncserver defaults
sudo service vncserver start
vncserver -kill :1

Запустим дисплейный менеджер:

sudo /etc/init.d/lightdm start

Запустим оконный менеджер:

sudo /etc/init.d/x11-common start

Запустим рабочий стол, который будет доступен удаленно:

vncserver

При каждом новом запуске рабочего стола с номером X необходимо пробрасывать порт для удаленного доступа:

iptables -A INPUT -p tcp --dport 59XX -j ACCEPT
iptables-save

Проверка VNC

Для проверки корректности работы воспользуйтесь клиентом рабочего стола, например Remmina.

 

Последнее обновление: 07.12.2018