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 и др.
По умолчанию дроплеты с Ubuntu 16.04 не имеют графической среды рабочего стола и установленного сервера VNC, поэтому мы начнём с их установки. Мы установим пакеты последней версии среды рабочего стола Xfce и пакет TightVNC из репозиториев Ubuntu.
На вашем сервере установите пакеты Xfce и TightVNC.
- sudo apt install xfce4 xfce4-goodies tightvncserver
Для завершения первичной настройки VNC сервера после его установки воспользуйтесь командой vncserver
для установки надёжного пароля.
- vncserver
Вам будет предложено ввести и подтвердить пароль, а также указать пароль для просмотра. Пользователи, использующие пароль для просмотра, не смогут ничего делать клавиатурой и мышью на машине с VNC. Это может быть полезно для демонстрации чего-либо на вашем VNC сервере другим людям, это не обязательно делать.
Выполнение vncserver
завершает установки 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
Теперь проверим соединение с вашим 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 по умолчанию. Он должен выглядеть похожим образом:
Вы можете осуществлять доступ к файлам в вашей домашней директории с помощью файлового менеджера или из командной строки:
Далее настроим сервер 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. Вы можете управлять своими файлами, программным обеспечением и настройками с помощью простого и знакомого графического интерфейса пользователя.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!