Настройка сервера VNC на Debian 8

VNC (или Virtual Network Computing) – это система, позволяющая пользоваться графическим интерфейсом удалённого сервера. Она может передавать обновления экрана и события клавиатуры и мыши по сети.

Система VNC полезна в ситуациях, когда сервер нуждается в графическом окружении рабочего стола.

XFCE – это легковесное графическое окружение рабочего стола. В данном руководстве будет использоваться XFCE, поскольку у него низкие требования к ресурсам системы, и многие пользователи знакомы с этим инструментом.

Примечание: При желании можно пользоваться и другим окружением рабочего стола (Gnome или KDE, к примеру).

Данное руководство поможет подготовить Debian 8, установить окружение рабочего стола XFCE и настроить VNC. Кроме того, в руководстве показано, как создать скрипт запуска сервера VNC и защитить его по SSH.

Требования

Предварительно настроенный Debian 8 (или 8.1) с root-доступом. 512 MB памяти будет достаточно для запуска VNC и XFCE. Однако в зависимости от ваших планов вам может понадобиться и больший объём памяти.

Клиент VNC на компьютере, чтобы иметь возможность подключиться к серверу. В руководстве используется UltraVNC в системе Windows, но, конечно, можно использовать любой другой клиент VNC. Загрузить UltraVNC можно по этой ссылке. Система OS X поставляется с собственным клиентом VNC, Screen Sharing.

SSH-клиент для безопасного подключения. В системе Windows будет использоваться PuTTY (загрузить можно здесь). В OS X используйте встроенное приложение терминала.

1: Установка VNC и XFCE

Сначала нужно установить сервер VNC и окружение рабочего стола XFCE, а также несколько дополнительных программ.

Обновите список пакетов сервера:

apt-get update

Теперь обновите список пакетов

apt-get -y upgrade

Установите пакеты tightvncserver, XFCE4, несколько полезных пакетов и icon-theme:

apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver

По умолчанию браузер не установлен. Вы можете установить iceweasel (версия Mozilla Firefox для Debian), чтобы иметь возможность просматривать сайты:

apt-get install iceweasel

2: Создание пользователя для VNC

Создайте отдельного пользователя для подключений VNC. Рекомендуется использовать sudo вместо пользователя root.

Чтобы добавить на сервер пользователя vnc, выполните команду:

adduser vnc

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

Чтобы установить sudo, используйте команду:

apt-get install sudo

Добавьте нового пользователя vnc в группу sudo, что передаст ему привилегии root.

gpasswd -a vnc sudo

Переключитесь в сессию пользователя vnc:

su - vnc

3: Запуск сервера VNC

В сессии пользователя vnc запустите сервер VNC и проверьте соединение.

vncserver

При первом запуске программа предложит установить пароль для соединения с клиентами. Установите пароль и запомните/запишите его, он понадобится в дальнейшем. Кроме того, можно установить пароль только для просмотра, который позволит пользователям видеть экран, но заблокирует взаимодействие с ним. Примечание: Пароль должен состоять из 6-8 символов.

На экране появится номер текущего дисплея:

xauth:  file /home/vnc/.Xauthority does not exist
New 'X' desktop is vnc:1
Creating default startup script /home/vnc/.vnc/xstartup
Starting applications specified in /home/vnc/.vnc/xstartup
Log file is /home/vnc/.vnc/vnc:1.log

По умолчанию первое соединение VNC обслуживается на порте 5901, второе – на 5902, и т.д.

Примечание: На данном этапе останавливать сервер не нужно. Команда для остановки сервера приведена ниже для справки.

Чтобы остановить сервер VNC, запустите на Display 1 (порт 5901) следующую команду:

vncserver -kill :1

где :1 – номер дисплея, который нужно остановить.

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

4: Подключение с клиента

Теперь можно подключиться к VNC. Для этого используйте локальный VNC-клиент, который зависит от операционной системы.

На Windows можно использовать UltraVNC.

OS X предоставляет для этого встроенное приложение Screen Sharing. Можно также использовать Safari. Для этого введите:

vnc://yourserverip:5901

В качестве адреса сервера VNC введите:

yourserverip:5901

и укажите только что выбранный пароль для VNC-подключений.

Теперь можно пользоваться удалённым рабочим столом.

5: Создание сервиса для VNC

Теперь можно создать сервис, добавив VNC в system. Сервисы позволяют запускать и останавливать VNC-сервер, а также запускать его автоматически при перезагрузке виртуального сервера.

Остановите текущий интерфейс:

vncserver -kill :1

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

В сессии пользователя vnc (или любого другого пользователя с правами sudo) создайте скрипт-файл.

sudo nano /usr/local/bin/myvncserver

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

#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;
stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;
restart)
$0 stop
$0 start
;;
esac
exit 0

Можно немного изменить скрипт, чтобы отрегулировать глубину цвета VNC.

В текстовом редакторе nano нажмите CTRL+O, чтобы сохранить, и CTRL+X, чтобы закрыть файл.

Сделайте файл исполняемым:

sudo chmod +x /usr/local/bin/myvncserver

Этот скрипт позволяет редактировать настройки и быстро запускать и останавливать сервер.

Примечание: При необходимости скрипт можно запустить/остановить вручную.

sudo /usr/local/bin/myvncserver start
sudo /usr/local/bin/myvncserver stop
sudo /usr/local/bin/myvncserver restart

Теперь можно создать файл для сервиса, чтобы описать его и сообщить машине, как запустить/остановить/перезапустить этот сервис.

sudo nano /lib/systemd/system/myvncserver.service

Скопируйте следующий код в файл. Данный сервис будет просто вызывать ранее созданный скрипт запуска.

[Unit] Description=Manage VNC Server on this droplet
[Service] Type=forking
ExecStart=/usr/local/bin/myvncserver start
ExecStop=/usr/local/bin/myvncserver stop
ExecReload=/usr/local/bin/myvncserver restart
User=vnc
[Install] WantedBy=multi-user.target

Перезапустите systemctl и включите сервис:

sudo systemctl daemon-reload
sudo systemctl enable myvncserver.service

Итак, теперь сервис включен. Используйте следующие команды для управления сервисом при помощи systemctl:

sudo systemctl start myvncserver.service
sudo systemctl stop myvncserver.service
sudo systemctl restart myvncserver.service

Запустите сервер VNC как сервис.

6: Защита VNC при помощи SSH-туннелирования

По умолчанию соединения VNC не шифруются. Потому для защиты данных рекомендуется использовать SSH-туннель.

Для этого нужно разрешить запуск VNC только на локальном хосте. Добавьте флаг -localhost в строку OPTIONS в ранее созданном скрипте.

Остановите сервер VNC:

sudo systemctl stop myvncserver.service

Отредактируйте скрипт:

sudo nano /usr/local/bin/myvncserver

Найдите эту строку:

. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. . .

И замените её:

. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. . .

Затем запустите VNC:

sudo systemctl start myvncserver.service

Теперь можно подключаться к серверу  VNC с удалённого компьютера.

Для пользователей Windows

Для создания SSH-туннеля используйте PuTTY.

Откройте PuTTY.

В левом меню перейдите в раздел Connection->SSH->Tunnels.

В разделе Add New Forwarded Port укажите  порт 5901 как Source port, а в поле Destination укажите localhost:5901. Нажмите Add.

Затем откройте раздел Session и в поле Host Name (or IP address) введите свой IP-адрес. Чтобы подключиться, нажмите Open.

Откройте сессию vnc. Не закрывайте окно PuTTY, пока соединение VNC не установится.

Затем используйте клиент VNC. Просто введите localhost::5901 и переведите соединение SSH в фоновый режим.

Для пользователей OS X

Чтобы создать SSH-туннель, введите в терминал:

ssh vnc@your_server_ip -L 5901:localhost:5901

Пройдите аутентификацию. Затем укажите localhost:5901 для Screen Sharing.

Заключение

Теперь у вас есть доступ к расшаренному удалённому рабочему столу на сервере Debian 8, который можно использовать для настройки сервера или совместного работы.

Tags: , , ,

3 комментария

Добавить комментарий