Установка VNC Server в Ubuntu 18.04
VNC или Virtual Network Computing — это одна из самых популярных технологий удаленного доступа к рабочему столу, которая используется в Linux. Ранее очень часто для доступа к удаленному рабочему столу в Linux использовался VNC сервер x11vnc, но после перехода Ubuntu на Wayland настройка X11vnc стала сложной. Но у него есть несколько альтернатив, например, TigerVNC, который мы сегодня рассмотрим.
В отличие от X11vnc здесь вы не можете подключиться к уже запущенной рабочей сессии, вместо этого каждый запущенный процесс VNC сервера будет создавать свою рабочую сессию на отдельном виртуальном экране дисплейного сервера. Дальше мы рассмотрим как выполняется установка и настройка VNC Server Ubuntu 18.04, а также первоначальная настройка программы для начала работы.
Установка VNC Server на Ubuntu 18.04
Протокол VNC позволяет делиться рабочим столом, поэтому вам будет необходимо иметь установленное окружение рабочего стола. В редакции Ubuntu для рабочего стола используется окружение Gnome. Но если вы пытаетесь установить программу на сервер, то сначала установите графическую оболочку.
Чтобы установить VNC server в Ubuntu выполните такую команду:
sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension tigervnc-viewer
Также необходимо установить эмулятор терминала xterm, его программа будет использовать для запуска тестового окружения:
sudo apt install xterm
Для запуска сервера используется команда vncserver. Её синтаксис очень прост:
vncserver порт: номер_дисплея опции
А вот её основные опции:
- -dry-run — тестовый запуск, не выполнять никаких реальных действий;
- -verbose — включить более подробный вывод;
- -useold — запустить VNC сервер только если он ещё не запущен;
- -cleanstale — очистить оставшиеся файлы после предыдущего запуска;
- -localhost — разрешить подключения только с локального компьютера;
- -name — имя VNC сервера, которое будет отображаться при подключении, по умолчанию используется host:display# (username);
- -geometry — разрешение экрана для запускаемого окружения, например, 1024×768;
- -depth — глубина цвета, доступны значения: 8, 15, 16 и 24;
- -fg — не запускать сервис в фоновом режиме и оставить его привязанным к терминалу;
- -autokill — автоматически останавливать сервер после завершения подключения;
- -xstartup — программа, которую следует использовать вместо оболочки;
- -list — список запущенных серверов;
- -kill — завершить запущенный vnc сервер.
Теперь можно попытаться запустить VNC Server:
vncserver -xstartup /usr/bin/xterm
При первом запуске утилита предложит вам ввести пароль, который можно будет использовать для подключения к компьютеру, а также ввести пароль для подключения в режиме только просмотр. Последнее можно пропустить. Обратите внимание, что утилиту необходимо запускать от имени обычного пользователя, а не суперпользователя.
Утилита не только создаст конфигурацию, но и запустит VNC сервер. Посмотреть список запущенных серверов можно командой:
Чтобы завершить запущенный VNC сервер используйте опцию kill и идентификатор дисплея, на котором запущен сервер из предыдущей команды:
Мы запускали TigerVNC с рабочем окружением в виде терминала, но теперь нам необходимо полноценное рабочее окружение Gnome. Чтобы его настроить создайте файл
/.vnc/xstartup со следующим содержимым:
#!/bin/sh
dbus-launch —exit-with-session gnome-session &
Это скрипт, который запускает рабочее окружение Gnome, вы также можете запускать и другие окружения. Теперь запущенный VNC сервер появится в списке доступных серверов и вы можете к нему подключиться.
Чтобы показать использование других опций давайте запустим vncserver на четвертом виртуальном дисплее с разрешением экрана 1024×768:
vncserver :1 -geometry 1024×768
Подключение к VNC серверу
Во-первых, на локальной машине вы можете подключиться к только что запущенному VNC серверу с помощью команды, которую предлагает сам сервер после запуска:
vncviewer -SecurityTypes VncAuth -passwd /home/sergiy/.vnc/passwd :1
В этой команде мы указываем тип авторизации и передаем файл с паролем, который создали при первом запуске VNC сервера. Перед вами откроется окно удаленного соединения.
Также можно запустить vncviewer Ubuntu без параметров, тогда утилита откроет графический интерфейс, где вам нужно ввести ip адрес машины, на которой запущен сервер, а также номер дисплея или порта:
После этого нужно ввести пароль для подключения и откроется это же окно удаленного соединения:
Выводы
В этой статье мы рассмотрели как выполняется установка VNC на Ubuntu 18.04, а также как настроить программу для полноценной работы.
VPS на Linux с графическим интерфейсом: запускаем сервер VNC на Ubuntu 18.04
Некоторые пользователи арендуют относительно недорогие VPS с Windows для запуска сервиса удаленных рабочих столов. То же самое можно сделать и на Linux без размещения в датацентре собственного железа или аренды выделенного сервера. Кому-то нужна привычная графическая среда для тестов и разработки или удаленный десктоп с широким каналом для работы с мобильных устройств. Есть масса вариантов применения основанной на протоколе Remote FrameBuffer (RFB) системы Virtual Network Computing (VNC). В небольшой статье мы расскажем, как настроить ее на виртуальной машине с любым гипервизором..
Оглавление:
Выбор сервера VNC
Сервис VNC может быть встроен в систему виртуализации, при этом гипервизор свяжет его с эмулируемыми устройствами и никакой дополнительной настройки не потребуется. Этот вариант предполагает значительные накладные расходы и поддерживается далеко не всеми провайдерами — даже в менее ресурсоемкой реализации, когда вместо эмуляции реального графического устройства виртуальной машине передается упрощенная абстракция (фреймбуфер). Иногда VNC-сервер привязывается к работающему X-серверу, но этот способ больше подходит для доступа к физической машине, а на виртуальной он создает ряд технических сложностей. Проще всего установить VNC-сервер со встроенным X-сервером. Он не требует наличия физических устройств (видеоадаптера, клавиатуры и мыши) или их эмуляции с помощью гипервизора, а потому подходит для VPS любого типа.
Установка и настройка
Нам потребуется виртуальная машина с Ubuntu Server 18.04 LTS в конфигурации по умолчанию. В стандартных репозиториях этого дистрибутива есть несколько серверов VNC: TightVNC, TigerVNC, x11vnc и прочие. Мы остановились на TigerVNC — актуальном форке не поддерживаемого разработчиком TightVNC. Настройка других серверов выполняется сходным образом. Также нужно выбрать окружение рабочего стола: оптимальным, на наш взгляд, вариантом будет XFCE из-за относительно невысоких требований к вычислительным ресурсам. Желающие могут установить другой DE или WM: тут все зависит от личных предпочтений, однако выбор ПО напрямую влияет на потребность в оперативной памяти и вычислительных ядрах.
Установка окружения рабочего стола со всеми зависимостями выполняется следующей командой:
Дальше необходимо инсталлировать сервер VNC:
Запускать его с правами суперпользователя — плохая идея. Создаем пользователя и группу:
Добавим пользователя в группу sudo, чтобы он мог решать связанные с администрированием задачи. Если такой потребности нет, этот шаг можно пропустить:
На следующем шаге нужно запустить сервер VNC с привилегиями пользователя vnc, чтобы создать безопасный пароль и конфигурационные файлы в каталоге
/.vnc/. Длина пароля может быть от 6 до 8 символов (лишние обрезаются). При необходимости также задается пароль только для просмотра, т.е. без доступа к клавиатуре и мыши. Следующие команды выполняются от имени пользователя vnc:
По умолчанию протокол RFB использует диапазон TCP-портов от 5900 до 5906 — это т.н. порты дисплея, каждый из которых соответствует экрану X-сервера. При этом порты ассоциированы с экранами от :0 по :6. Запущенный нами экземпляр сервера VNC слушает порт 5901 (экран :1). Прочие экземпляры могут работать на других портах с экранами :2, :3 и т. д. Перед дальнейшей настройкой нужно остановить сервер:
Команда должна вывести примерно такое сообщение: «Killing Xtigervnc process ID 18105… success!».
При запуске TigerVNC выполняет сценарий
/.vnc/xstartup для настройки параметров конфигурации. Создадим собственный скрипт, предварительно сохранив резервную копию имеющегося, если он существует:
Сеанс окружения рабочего стола XFCE запускается следующим скриптом xstartup:
Команда xrdb необходима, чтобы система VNC прочитала файл .Xresources в домашнем каталоге. Там пользователь может определить различные параметры графического рабочего стола: рендеринг шрифтов, цвета терминала, темы курсора и т.д. Сценарий необходимо сделать исполняемым:
На этом настройка сервера VNC завершена. Если запустить его командой vncserver -localhost no (от имени пользователя vnc), можно будет подключиться с заданным ранее паролем и увидеть такую картину:
Запуск службы через systemd
Ручной запуск сервера VNC плохо подходит для боевого применения, поэтому мы настроим системную службу. Команды выполняются от имени root (используем sudo). Для начала создаем новый юнит-файл для нашего сервера:
Символ @ в имени позволяет передавать аргумент для настройки службы. В нашем случае он задает порт дисплея VNC. Юнит-файл состоит из нескольких разделов:
Затем нужно уведомить systemd о появлении нового файла и активировать его:
Цифра 1 в имени задает номер экрана.
Останавливаем сервер VNC, запускаем его как службу и проверяем статус:
Если служба работает, мы должны получить примерно такой результат.
Подключение к рабочему столу
Наша конфигурация не использует шифрование, поэтому сетевые пакеты могут быть перехвачены злоумышленниками. К тому же в VNC-серверах достаточно часто находят уязвимости, так что открывать их для доступа из интернета не стоит. Для безопасного подключения на локальном компьютере нужно упаковать трафик в туннель SSH, а затем настроить клиент VNC. Под Windows можно использовать графический клиент SSH (например, PuTTY). Для безопасности TigerVNC на сервере слушает только localhost и недоступен напрямую из сетей общего пользования:
В Linux, FreeBSD, OS X и прочих UNIX-подобных ОС туннель с клиентского компьютера делается с помощью утилиты ssh (на сервере VNC должен быть запущен sshd):
Опция -L привязывает порт 5901 удаленного подключения к порту 5901 на localhost. Опция -C включает сжатие, а -N указывает утилите ssh на отсутствие необходимости выполнять удаленную команду. Опция -l задает login для удаленного входа в систему.
После настройки туннеля на локальном компьютере необходимо запустить клиент VNC и установить соединение с хостом 127.0.0.1:5901 (localhost:5901), использовав для доступа к серверу VNC заданный ранее пароль. Теперь мы можем безопасно взаимодействовать через шифрованный туннель с графическим окружением рабочего стола XFCE на VPS. На скриншоте в эмуляторе терминала запущена утилита top, чтобы показать незначительное потребление виртуальной машиной вычислительных ресурсов. Дальше все будет зависеть от пользовательских приложений.