Настройка сервера 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: Debian 8, SSH, VNC, XFCE
3 комментария
Абсолютно бесполезно! Добросовестно прошёл весь этот геморрой, а в итоге абсолютный нуль! В Debian 7 для удалённого доступа достаточно было поставить пару птичек в приложении vino. В 8 и 9 версиях вот уже четвёртый год абсолютно безрезультатно мудохаюсь.
Отличный пост/манул на русском по установки VNC, большое спасибо авторам сайта за проделанную работу.
Большое спасибо, мануал супер