Как установить и настроить VNC в Ubuntu 16.04
Введение
VNC (расшифровывается как Virtual Network Computing) - это система, позволяющая вам использовать клавиатуру и мышь для взаимодействия с графическим интерфейсом пользователя на удалённом сервере. Эта система позволяет управлять файлами, программным обеспечением и настройками на удалённом сервере пользователям, чувствующим себя некомфортно при работе с инструментами командной строки.
В этой статье мы опишем процесс установки VNC на сервер с Ubuntu 16.04, а также узнаем, как создать защищённое соединение с этим сервером с помощью SSH туннеля. В качестве сервера VNC мы будем использовать TightVNC - быстрый и лёгкий пакет для удалённого доступа. Благодаря этому продукту наше VNC соединение будет работать надёжно даже на медленном соединении с Интернетом.
Перед установкой
Для следования описанным в этой статье инструкциям вам понадобятся:
Дроплет с Ubuntu 16.04, настроенный согласно шагам, описанным в статье о первичной настройке сервера на Ubuntu 16.04, включая создание не-рутового (non-root) пользователя с привилегиями sudo.
Локальный компьютер с клиентом VNC, поддерживающим соединения через SSH туннель. Если вы используете Windows, вы можете воспользоваться TightVNC, RealVNC или UltraVNC. Пользователи Mas OS X могут использовать встроенную утилиту Screen Sharing, или воспользоваться кросс-платформенным приложением, например, RealVNC. Пользователи Linux имеют широкий выбор:
vinagre
,krdc
, RealVNC, TightVNC и др.
Шаг 1 - Установка Desktop Environment и сервера VNC
По умолчанию дроплеты с Ubuntu 16.04 не имеют графической среды рабочего стола и установленного сервера VNC, поэтому мы начнём с их установки. Мы установим пакеты последней версии среды рабочего стола Xfce и пакет TightVNC из репозиториев Ubuntu.
На вашем сервере установите пакеты Xfce и TightVNC.
- sudo apt install xfce4 xfce4-goodies tightvncserver
Для завершения первичной настройки VNC сервера после его установки воспользуйтесь командой vncserver
для установки надёжного пароля.
- vncserver
Вам будет предложено ввести и подтвердить пароль, а также указать пароль для просмотра. Пользователи, использующие пароль для просмотра, не смогут ничего делать клавиатурой и мышью на машине с VNC. Это может быть полезно для демонстрации чего-либо на вашем VNC сервере другим людям, это не обязательно делать.
Выполнение vncserver
завершает установки VNC созданием файлов конфигурации по умолчанию, а также созданием информации для соединения с нашим сервером. После установки этих пакетов мы можем начать настраивать наш сервер.
Шаг 2 - Настройка сервера VNC
Сначала укажем команды, которые сервер VNC должен выполнять при запуске. Эти команды задаются в конфигурационном файле xstartup
в поддиректории .vnc
вашей домашней директории. Скрипт запуска был создан во время выполнения команды vncserver
на предыдущем шаге, сейчас мы изменим некоторые команды для работы с Xfce.
При первом запуске VNC запускает инстанс сервера по умолчанию на порту 5901. Этот порт называется портом отображения (display port), и в VNC он имеет обозначение :1
. VNC может запускать много инстансов на других портах, например, :2
, :3
, и так далее. При работе с серверами VNC помните, что порт отображения с номером :X
работает на порту 5900+X
.
Поскольку мы собираемся внести изменения в конфигурацию сервера VNC, сначала нам необходимо остановить инстанс сервера, работающего на порту 5901.
- vncserver -kill :1
Вывод должен выглядеть похожим образом с точностью до идентификатора процесса (process ID):
ВыводKilling Xtightvnc process ID 17648
Перед внесением изменений в новый файл xstartup
, сделаем резервную копию исходного файла.
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Теперь создадим новый файл xstartup
используя nano
или другой текстовый редактор.
- nano ~/.vnc/xstartup
Вставьте эти команды в файл для автоматического их выполнения при запуске или перезапуске сервера VNC, затем сохраните и закройте файл.
~/.vnc/xstartup#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Первая команда файла xrdb $HOME/.Xresources
сообщает фреймворку графического интерфейса пользователя VNC, что необходимо использовать пользовательский файл .Xresources
. Файл .Xresources
сохраняет определённые пользовательские настройки рабочего стола, например, цвета терминала, тему курсора, рендеринг шрифтов. Вторая команда предписывает серверу запустить Xfce, который и позволяет вам комфортно управлять вашим сервером.
Для того, чтобы сервер VNC мог использовать эти настройки, сделаем файл исполняемым.
- sudo chmod +x ~/.vnc/xstartup
Теперь перезапустим сервер VNC.
- vncserver
Сервер должен перезапуститься и вывести нечто похожее в консоль:
ВыводNew 'X' desktop is your_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log
Шаг 3 - Тестирование рабочего стола VNC
Теперь проверим соединение с вашим VNC сервером.
Сначала создадим SSH соединение на вашей локальной машине для установки безопасного соединения с VNC. Вы можете сделать это с помощью терминала на Linux или OS X следующей командой. Не забудьте заменить username
и server_ip_address
на имя своего пользователя с правами sudo и IP адрес вашего сервера.
- ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Если вы используете графический клиент SSH, например, PuTTY, задайте server_ip_address
в качестве IP адреса соединения, а также установите localhost:5901
в качестве пробрасываемого порта в настройках соединения SSH своего клиента.
Далее вы можете использовать свой клиент VNC для установки соединения с сервером VNC на localhost:5901
. Вам будет предложено аутентифицироваться. Используйте пароль, заданный вами на шаге 1.
После успешной установки соединения вы увидите рабочий стол Xfce по умолчанию. Он должен выглядеть похожим образом:
Вы можете осуществлять доступ к файлам в вашей домашней директории с помощью файлового менеджера или из командной строки:
Шаг 4 - Создание файла сервиса VNC
Далее настроим сервер VNC как сервис systemd. Это позволит запускать, останавливать и перезапускать сервер VNC так же, как и любой другой сервис systemd.
Сначала создадим юнит-файл /etc/systemd/system/vncserver@.service
с помощью вашего текстового редактора:
- sudo nano /etc/systemd/system/vncserver@.service
Скопируйте и вставьте в него следующее содержимое. Убедитесь, что вы изменили значение поля User и имя пользователя в поле PIDFILE на ваши значения.
/etc/systemd/system/vncserver@.service[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammy
PAMName=login
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Сохраните и закройте файл.
Далее сообщим системе о наличии нового юнит-файла.
- sudo systemctl daemon-reload
Активируем юнит-файл.
- sudo systemctl enable vncserver@1.service
Остановим текущий инстанс сервера VNC, если он запущен.
- vncserver -kill :1
Далее запустим его так же, как если бы мы запускали любой сервис systemd.
- sudo systemctl start vncserver@1
Убедимся, что сервис запущен, этой командой:
- sudo systemctl status vncserver@1
Если запуск прошёл корректно, вывод должен выглядеть похожим образом:
vncserver@1.service - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)
...
systemd[1]: Starting TightVNC server on Ubuntu 16.04...
systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[1]: Started TightVNC server on Ubuntu 16.04.
Заключение
Теперь у вас есть установленный и настроенный сервер VNC на вашем сервере с Ubuntu 16.04. Вы можете управлять своими файлами, программным обеспечением и настройками с помощью простого и знакомого графического интерфейса пользователя.
0 Comments