06.06.2023

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

Осуществить подключение к удаленному рабочему столу можно разными способами. Рассмотрим подробно один из множества – систему VNC. В качестве примера используется Ubuntu Server 16.04 с графической средой xfce4.

Предварительный этап

Подготовим «Убунту» для удаленного подключения: проинсталлируем пакет VNC и графическую оболочку xfce4.

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

Важно! Перед инсталляцией нового ПО обязательно обновляем локальные пакеты (первая строка).

Задаем парольную защиту для доступа к удаленному рабочему столу, набрав строку:

vncserver

VNC подразделяет пароль на два типа: один для полного доступа, а другой – только на просмотр. В терминологии системы удаленного доступа – view-only. Рекомендуется задать два разных значения.

Конфигурирование

Перейдем к настройке серверной части VNC, значения которой хранятся в файле ~/.vnc/xstartup. VNC-сервер активируется на порте 5901, но в системе прописан как «:1». Соответственно, при запуске на других присваивается номера по порядку – «:2», «:3» и т. д.

1. Сначала деактивируем первый порт.

vncserver –kill :1

Это необходимо для дальнейшей настройки системы удаленного доступа.

2. Обязательно создаем резервную копию настроек:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Важно! Бэкап имеет расширение .BAK

3. Откроем его через встроенную утилиту Vi:

vi ~/.vnc/xstartup

Добавим три строки:

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

Графическая оболочка перемещена в меню автозапуска на стороне сервера.

4. Скорректируем права доступа к файлу xstartup. Разрешим доступ на активацию.

sudo chmod +x ~/.vnc/xstartup

5. Добавим пользователя, и создадим сценарий запуска. Открываем через Vi:

sudo vi /etc/init.d/vncserver

Вносим корректировки, как показано на скриншоте. Расшифровка каждого пункта ниже:

Скриншот №1. Скрипт для VNC-сервер.

В первой строке меняем имя пользователя на необходимое.

Вторая часть текста регулирует параметры дисплея: разрешения, глубину цвета, качество цветопередачи и другие параметры. Третий блок запускает логирование при активности VNC.

Предпоследние строки закрывают приложение и останавливают службу, а последняя часть связывает между собой команды открытия и закрытия VNC.

6. Добавляем права на активацию кода

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

7. Теперь откроем удаленный доступ путем проброса портов.

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

8. Активируем автозапуск сервиса при старте VNC и перезапустим его для применения изменений.

sudo update-rc.d vncserver defaults
sudo service vncserver start

Запустится рабочий стол, недоступный пока что по удаленному соединению. Завершим процесс.

vncserver -kill :1

9. Переходим к старту дополнительных служб на VNC-сервере.

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

Активируем менеджер дисплея и рабочего окна (lightdm и x11-common).

10. Теперь запустим удаленный рабочий стол, чтобы администратор мог подключиться к нему.

vncserver

Не стоит забывать, что при каждом подключении открывается новое соединение, то есть новые порты. Соответственно, для каждого придется выполнять проброс. Команда выглядит так:

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

, где zz – цифры порта, для которого открываем доступ.

11. Теперь запускаем VNC-клиент и подключаемся к серверу. Например, через программу Remmina, UltraVNC, Vino и др.