Установка и настройка VNC на Ubuntu 18.04

Настройка VNC Ubuntu

В руководстве будут рассмотрены шаги установки и настройки VNC сервера на систему Ubuntu 18.04. Также будет дан способ надежного подключения к серверу VNC через SSH туннель.

Virtual Network Computing (VNC) системой удаленного доступа, что позволяет управлять компьютером, расположенном на расстоянии. Это открытая альтернатива протоколу удаленного рабочего стола Microsoft (RDP).

Подготовка к установке VNC

Прежде чем продолжить чтение, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo т.е. root пользователь.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Установка рабочего стола VNC на Ubuntu

На большинстве серверов не установлена среда рабочего стола, поэтому мы начнем с установки ее облегченной версии.

В репозиториях Ubuntu есть несколько видов сред рабочего стола (DE). В данном руководстве мы будем устанавливать Xfce. Это быстрая, стабильная и легкая среда рабочего стола, что делает ее идеальной для использования на удаленном сервере.

Для начала обновите систему через:

Затем выполните следующую команду для установки Xfce на ваш сервер:

Время, что уходит на установку пакетов Xfce, зависит от особенностей вашего оборудования и системы.

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

Для сохранения надежности и производительности нужно создать отдельную связь пользователя vnc_user. Здесь можно использовать уже существующего пользователя.

Если вы запустите рабочий стол от пользователя root, тогда возникнут проблемы с Google Chrome и другим софтом который откажется работать с root правами. Запускайте VNC сервер НЕ НА ROOT пользователе! Создайте другого пользователя и использует его.

Создадим пользователя vnc_user при помощи следующей команды. Можете сохранить свое имя пользователя, выбор за вами. Вас попросят ввести новый пароль и указать детали пользователя. Введите новый пароль для пользователя (пароль для подключения к VNC укажите ниже, тут отдельная часть пользователя). Указание других деталей можете пропустить, нажав ENTER.

Установите sudo, используя следующую команду. Пользователя vnc_user потребуется добавить в группу sudo.

Теперь добавьте пользователя vnc_user в группу sudo. Таким образом, у пользователя vnc_user будет разрешение действовать от имени пользователя root, а также выполнять команды root.

Переключитесь на пользователя vnc для дальнейших операций.

Установка VNC сервера

В репозиториях Ubuntu также есть несколько серверов VNC: TightVNC, TigerVNC и x11vnc. У каждого VNC сервера есть свои сильные и слабые стороны с точки зрения скорости и безопасности.

Мы будем устанавливать TigerVNC, который предоставляет высокопроизводительный VNC сервер.

Введите следующую команду для установки TigerVNC на ваш сервер Ubuntu:

Следующим шагом после установки сервера VNC является запуск команды vncserver. Она создаст начальную конфигурацию и попросит установит новый пароль. При выполнении следующей команды не используйте sudo:

Почему добавлен флаг -localhost no?

Это личное наблюдение автора. Я ознакомился с самыми популярными статьями на тему установки и настройки VNC, но нигде не упомянут данный флаг. Если его не указать, то вы не сможете подключится к вашему VPS иди выделенному серверу.

Вы будете получать такие ошибки:

  • vnc connection closed;
  • vnc connection refused.

Это из соображений безопасности. Выходит, что подключаться к другому серверу можно только по локальной сети. В случае если вы хотите подключится к выделенному серверу, то ставьте -localhost no и хороший пароль т.к. ВАШ СЕРВЕР БУДЕТ АТАКОВАН ИЗ ВНЕ. Мы не ошиблись в утверждении «БУДЕТ«, ваш IP и порт 5901 будут видны на весь мир и бот-нет уже начнет подбирать пароль к вашему VNC. В своих паролях используйся символы, буквы разных регистров и цифры. Держите эту информацию в голове. Можете воспользоваться онлайн генерацией пароля по данной ссылке указал длину 8 и кликнув на все галочки.

Вам будет предложено ввести и подтвердить пароль (максимум 8 символов должен содержать пароль), а также указать, следует ли установить его в качестве пароля только для просмотра. Если вы решите установить пароль только для просмотра, пользователь не сможет работать с VNC при помощи мыши и клавиатуры.



При первом запуске команды vncserver она создаст и сохранит файл пароля в директории ~/.vnc. Если такой директории нет, она будет создана.

Обратите внимание на :1 после имени хоста в выводе выше. Знак указывает на номер порта дисплея, на котором запущен сервер vnc. В нашем случае сервер запущен на TCP порту 5901 (5900 + 1). Если вы создадите второй экземпляр при помощи vncserver, он будет работать на следующем свободном порту, то есть :2. Это означает, что сервер запущен на порту 5902 (5900 + 2).

При работе с серверами VNC не забывайте, что  :X — это порт дисплея, который отсылается к 5900+X.

Перед переходом к следующему шагу остановите все VNC сессии, используя команду vncserver с параметром -kill и номером сервера в качестве аргумента. В нашем случае сервер запущен на порту 5901 (:1), поэтому мы остановим его следующим образом:

Настройка VNC сервера

Теперь на сервере установлены Xfce и TigerVNC, и нам нужно настроить TigerVNC для работы с Xfce. Далее требуется создать следующий файл:

Сохраните и закройте файл. Команды выше будут автоматически выполняться при запуске или перезапуске сервера TigerVNC.

У файла ~/.vnc/xstartup также должно быть разрешение на выполнение. Запустите следующую chmod команду, чтобы убедиться, что разрешения верны:

Если нужно передать дополнительные параметры на сервер VNC, можно создать файл config и добавить по одному параметру в строку. Вот пример:

Создание Systemd unit файла

Сейчас мы создадим Systemd unit файл, который позволит легко запускать, останавливать или вновь запускать сервис VNC по мере необходимости, как и другие сервисы systemd.

Откройте текстовый редактор, скопируйте и вставьте туда следующую конфигурацию. Не забудьте поменять имя пользователя в строке 7 на ваше.

Сохраните и закройте файл.

Сообщите systemd, что вы создали новый unit файл:

На следующем шаге делаем unit файл доступным с помощью следующей команды:

Число 1 после знака @ определяет порт дисплея, на котором будет работать сервис VNC. Это означает, что сервер VNC будет действовать на порту 5901, как и говорилось в предыдущем разделе.

Запустите сервис VNC, выполнив:

Проверьте, что сервис успешно запущен:

Подключение к серверу VNC

VNC не является зашифрованным протоколом, его пакеты могут быть перехвачены. Оптимальнее всего создать туннель SSH, который будет безопасно перенаправлять трафик с вашего локального компьютера и порт 5901 на сервер на том же порту.

Установка SSH туннеля на Linux и macOS

Если вы используете Linux, macOS или любую другую операционную систему на основе Unix, вы можете легко создать SSH туннель при помощи следующей команды:

Вам предложат ввести пароль пользователя.

Не забудьте поменять username и IP-Вашего-Сервера на свое имя пользователя и IP адрес сервера.

Установка SSH туннеля на Windows

Пользователи Windows могут установить SSH-туннель при помощи клиента PuTTY SSH.

Откройте Putty и введите свой IP адрес в поле Host name or IP address.

PuTTY SSH client

Под меню Connection откроется SSH, где нужно выбрать Tunnels. Введите порт (5901) VNC сервера в поле Source Port, а также введите server_ip_address:5901 в поле Destination, после чего нажмите кнопку Add, как показано на изображении ниже:

PuTTY SSH client

Вернитесь назад на страницу Session и сохраните настройки, чтобы их не нужно было заново вводить каждый раз. Теперь все, что вам нужно сделать, так это выбрать сохраненную сессию и залогиниться на удаленный сервер, нажав кнопку Open.

Подключение при использовании Vncviewer

После настройки SSH-туннеля можно открыть Vncviewer и подключиться к VNC серверу по адресу localhost: 5901. Вы можете использовать любую программу просмотра VNC: TigerVNC, TightVNC, RealVNC, UltraVNC Vinagre или VNC Viewer для Google Chrome. В данном примере мы будем использовать TigerVNC. Откройте программу просмотра VNC, введите localhost:5901 и нажмите кнопку Connect. Вместо localhost введите IP вашего сервера.

Vncviewer

Введите ваш пароль (тот из 8 символов) который вы ввели при первом запуске VNC сервера. После этого откроется рабочий стол Xfce по умолчанию. Он будет выглядеть примерно следующим образом:

default Xfce desktop

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

Заключение

Теперь у вас есть запущенный сервер VNC. Вы можете легко управлять сервером с локального настольного компьютера, используя простой графический интерфейс.

Чтобы настроить VNC сервер на запуск отображения для нескольких пользователей, создайте начальную конфигурацию и задайте пароль через команду vncserver. Вам также нужно создать новый файл сервиса, используя другой порт.

Если у вас есть какие-либо вопросы, оставляйте комментарии.