Установка и настройка x11vnc ubuntu 18

Обновлено: 03.07.2024

x11vnc — это сервер VNC для Linux. Пакет x11vnc также включает несколько дополнительных утилит. VNC сервер x11vnc в первую очередь предназначен для работы в качестве службы или демона, но программа имеет и графический интерфейс.

С помощью VNC можно подключиться к другому компьютеру и работать за ним так, будто бы вы сидите перед ним. То есть VNC является аналогом RDP (Remote Desktop Protocol).

Как установить x11vnc

Пакет x11vnc присутствует в стандартных репозиториях большинства дистрибутивов Linux.

Для установки в Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

Для установки в Arch Linux, BlackArch и их производные:

Быстрый запуск x11vnc

Быстрый запуск без предварительной настройки подходит только в экстренных ситуациях, во всех остальных случаях настоятельно рекомендуется хотя бы установить пароль.

Запуск VNC сервера выполняется командой:

Поскольку к серверу без пароля может подключиться кто угодно, то для его остановки нажмите CTRL-c и перейдите к настройке.

Как установить пароль для x11vnc

Запустите команду вида:

В этом случае ПАРОЛЬ в кодированном виде будет записан в указанный ФАЙЛ.

Также вы можете использовать следующий синтаксис:

В этом случае программа запросит пароль и его подтверждение, а также запросит подтверждение на запись пароля в файл.

Также можно не указывать файл для сохранения, то есть следующий синтаксис:

В этом случае пароль будет сохранён в файл по умолчанию, а именно в

Теперь чтобы сервер использовал пароль, запустите команду вида:

Если существует файл

/.vnc/passwd от другого приложения VNC, то сервер будет работать нормально и с ним.

Кроме опции -rfbauth, после которой нужно указать путь до файла с паролем, сохранённого с помощью опции -storepasswd, имеется ещё две опции по работе с паролем:

С опцией -passwdfile указывается путь до файла, в котором в первой строке хранится пароль в виде простого текста.

А опция -passwd позволяет установить пароль прямо в командной строке.

Опция -usepw сделает так, что автоматически будут использоваться файлы

/.vnc/passwdfile. А если они не существуют, то будет сделан запрос на создание файла

Помните, что пароль защищает только от несанкционированного подключения, но трафик всё равно передаётся в незашифрованным. Чтобы трафик шифровался, его нужно туннелировать через ssh или использовать опции x11vnc SSL: -ssl и -stunnel. Эти вопросы будут рассмотрены далее.

Файл настроек x11vnc

Поддержка файла конфигурации: если файл $HOME/.x11vncrc (то есть

/.x11vncrc) существует, то каждая строка в нем обрабатывается как один параметр командной строки.

Отключить использование файла конфигурации можно опцией -norc.

Для каждого имени опции начальный символ "-" не требуется. Например, строки "forever" и "-forever" является эквивалентными. Аналогично, «wait 100» или «-wait 100» являются приемлемыми и эквивалентными строками.

Начальные и конечные пробелы обрезаются.

Строки могут быть продолжены символом \ как последним символом строки (он становится пробелом).

К примеру, сохраним в файл

В результате служба x11vnc всегда будет использовать пароль для подключения, даже если запустить её без опций:

Обратите внимание, что путь до файла с паролем записан как абсолютный, а не относительный путь, чтобы независимо от способа запуска (например, при запуске демона от root) не возникало проблем с трактовой пути.

Почему x11vnc сама выключается

По умолчанию сервер x11vnc автоматически завершает работу при отключении клиента. Чтобы это не происходило, используйте опцию -forever.

Также при подключении нового клиента, существующий клиент отключается. Чтобы разрешить множественное подключение клиентов, используйте опцию -shared.

Для достижения стандартного VNC поведения без совместного подключения, когда новый VNC клиент подключается, а существующий VNC клиент отбрасывается, используйте совместно опции -nevershared -forever. Этот метод также может использоваться для защиты от зависших TCP подключений, который не исчезают.

Графический интерфейс x11vnc

Для запуска графического интерфейса x11vnc используйте опцию -gui:

Графический интерфейс можно запускать даже когда служба x11vnc уже работает. Данный интерфейс передаёт команды службе с помощью опции, которая будет рассмотрена далее.


Как разрешить подключения только с определённых IP адресов

Для этого используйте опцию -allow host1[,host2..]

-allow применяется в режиме -ssl, но не в режиме -stunnel.

IPv6: по состоянию на x11vnc 0.9.10, хост может быть указан в числовом формате IPv6, например 2001:4860:b009::93.

Опция -localhost это в основном так то же самое, что и "-allow 127.0.0.1".

Примечание: если вы хотите ограничить, какой сетевой интерфейс прослушивает x11vnc, смотрите опцию -listen ниже. Например. "-listen localhost" или "-listen 192.168.3.21". В особом случае опция «-localhost» подразумевает «-listen localhost».

Если вы не хотите, чтобы x11vnc прослушивал ЛЮБОЙ интерфейс (очевидно, вы используете -connect или -connect_or_exit или планируете использовать удалённое управление: -R connect: host), используйте -rfbport 0

Как в x11vnc установить пароль только на просмотр

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

Для этого используйте опцию -viewpasswd СТРОКА.

Пароль для полного доступа (например, указанный опцией -passwd), также должен быть указан.

Как запретить любой ввод на VNC сервере

Для этого используйте опцию -viewonly, она делает так, что все VNC клиенты могут только наблюдать (по умолчанию выключено).

Как настроить способы ввода, разрешённые пользователям

Опция -input СРОКА делает точную настройку разрешённого пользовательского ввода. Если строка не содержит запятой "," настройка применяется только к обычным клиентам. В противном случае часть перед "," предназначена для обычных клиентов, а часть после для клиентов с правами только для просмотра. «K» - для ввода нажатия клавиши, «M» - для ввода движения мыши, «B» - для ввода нажатием кнопки, «C» - для ввода в буфер обмена, а «F» - для передачи файла (только ultravnc). Их присутствие в строке позволяет этот тип ввода. Например. «-input M» означает, что обычные пользователи могут перемещать только мышь, а «-input KMBCF,M» позволяет обычным пользователям делать все что угодно, и позволяет пользователям с правами только для просмотра перемещать мышь. Эта опция игнорируется, когда действует глобальное -viewonly (в этом случае все входные данные отбрасываются).

Настройка совместного доступа

Одновременное подключение нескольких клиентов к одному VNC серверу регулируется следующими опциями:

-shared

Разрешает одновременное подключение нескольких клиентов

-alwaysshared

Всегда обрабатывать новых клиентов как совместных

-nevershared

Никогда не обрабатывать новых клиентов как совместных

-dontdisconnect

Не отключать существующих клиентов когда приходит новое не-совместное подключение (вместо этого отклонять новые подключения)

Как прослушивать определённый IP адрес в x11vnc

Опцией -listen IP_АДРЕС можно установить, на каком сетевом интерфейс принимать подключения (по умолчанию на всех). Можно указать IP или имя хоста.

Как изменить имя рабочего стола VNC

Для этого есть опция -desktop ИМЯ, которая меняет имя рабочего стола VNC (по умолчанию это "LibVNCServer")

Как изменить номер используемого порта

Поменять порт можно с помощью опции -rfbport ЧИСЛО. Не забудьте указать это же значение при подключении просмотрщика VNC.

Демон службы x11vnc

x11vnc по умолчанию не регистрирует свой демон, но его легко настроить.

Создайте файл /etc/systemd/system/x11vnc.service

со следующим содержимым:

Установите пароль VNC (замените МОЙ_ПАРОЛЬ):

Для запуска службы:

Для проверки её статуса:


Для включения автозапуска службы при загрузке компьютера:

Для остановки службы:

Для удаления службы из автозагрузки

Более плавное обновление картинки

Попробуйте опцию -ncach ЧИСЛО, например:

Данная опция включает функцию кэширования пикселей на стороне клиента. ЧИСЛО по умолчанию равно 10, то есть -ncache 10.

Данная опция приводит к повышенному потреблению оперативной памяти. Рекомендуются значения ЧИСЛА от 6 до 12. ЧИСЛО должно быть чётным, если это не так, то он увеличивается на 1.

Также попробуйте опцию -ncache_cr.

Как запретить подключение всех клиентов

С помощью опции -deny_all запущенная служба x11vnc не будет принимать подключения. Действие данной опции можно отменить удалённым управлением службы, а именно командой:

После выполнения данной команды будет разрешено подключение VNC клиентов.

Как менять опции x11vnc без перезапуска службы

Службой x11vnc можно управлять удалённо, например, завершать её работу или на лету менять опции. Для этого используется та же самая команда, которой запускается VNC сервер, то есть x11vnc с опцией -remote. У этой опции два псевдонима: -R и -r.

Список поддерживаемых команд большой, рассмотрим только несколько примеров:

  • Для установки уже запущенного сервера VNC используйте любую из следующих команд:
  • Для разрешения совместных подключений:
  • Следующая команда изменит масштабирование рабочего стола:

Команда для разрешения подключений, если VNC сервер был запущен с опцией -deny_all:

Для запуска последовательности команд используйте что-то вроде такого:

Для чтения команд из файла используйте:

Как создать SSL сертификаты для шифрования трафика VNC сессий

На сервере сгенерируйте сертификаты (замените оба вхождения «192.168.0.100» на IP-адрес сервера — это может быть как локальный, так и глобальный IP):

Для x11vnc нужен файл, в котором вначале идёт приватный ключ, а затем сертификат, создадим его следующей командой:

Эта команда просто объединила содержимое файлов vnc-server-private.pem и vnc-server.pem в файл server.pem.

Как использовать SSL для шифрования трафика VNC сессий

Сервер запустите с опцией -ssl после которой укажите путь до файла server.pem:

Скопируйте файл с сертификатом vnc-server.pem на компьютер с просмотрщиком VNC — то есть клиентам, которые будут подключаться — укажите в клиентском приложении путь до файла сертификата, например в TigerVNC:


После этого VNC трафик будет шифроваться:


Как использовать имя и пароль пользователя Linux для аутентификации VNC

По умолчанию для входа по VNC нужно установить специальный пароль для данной службы. Если вы хотите, чтобы аутентификация происходила с использованием учётных данных пользователей на сервере, то укажите опцию -unixpw [СПИСОК].

Для данной опции обязательно использовать шифрование с помощью SSL сертификата:

В результате будет использоваться Unix имя пользователя и пароль аутентификации. x11vnc будет использовать программу su для проверки пароля пользователя. [СПИСОК] — необязательный список разрешённых имён пользователей Unix, разделённых запятыми. Если строка [СПИСОК] начинается с символа "!" тогда весь список принимается как исключающий список. Ниже приведены параметры для каждого пользователя, которые могут быть применены.

Знакомый диалог "login:" and "Password:" представлен пользователю на чёрном экране внутри vncviewer. Соединение обрывается, если пользователь не в состоянии ввести правильный пароль в 3 попытках или не отправляет его до истечения 45-секундного тайм-аута. В этот период существующие клиенты доступны только для просмотра.


Если первым полученным символом является «Escape», то имя пользователя unix не будет отображаться после «login:» по мере его введения. Это может быть полезно для просмотрщиков VNC, которые автоматически вводят имя пользователя и пароль.

Поскольку подробное поведение su может варьироваться от ОС к ОС и для локальных конфигураций, проверьте режим перед развёртыванием, чтобы убедиться, что он работает правильно. x11vnc попытается быть консервативным и отклонит вход в систему, если произойдёт что-то ненормальное.

Имена пользователей в [СПИСКЕ] через запятую могут иметь индивидуальные параметры после «:», например, "fred:opts", где "opts" - это разделённый плюсом ("+") список "viewonly", "fullaccess", "input = XXXX" или "deny", например, "karl,wally:viewonly,boss:input=M". Для «input=» это K,M,B,C, о которых рассказано при описании опции -input.

Если элемент в списке «*», это означает, что эти параметры применяются ко всем пользователям. Это также подразумевает, что все пользователи могут войти в систему после предоставления действительного пароля. Используйте «deny», чтобы явно запретить некоторых пользователей, если вы используете «*», чтобы установить глобальную опцию. Если [СПИСОК] начинается с "!", символ «*» игнорируется для проверки, разрешён ли пользователь, но значения параметров, связанные с ним, применяются как обычно.

Довольно часто может понадобиться подключиться к удаленному компьютеру. Если это сервер, то можно подключиться по ssh. Но если это домашний компьютер, то намного удобнее использовать графическую оболочку. Во многих случаях это позволяет намного быстрее выполнить привычные обычному пользователю действия. Есть несколько способов и несколько протоколов, с помощью которых можно получить удаленный доступ к графическому интерфейсу, но самый популярный и самый используемый из них - VNC.

В этой небольшой статье будет рассмотрена настройка x11vnc на Ubuntu. Мы погорим о том как установить VNC в Ubuntu, а также как добавить его в автозагрузку с помощьюs systemd. А теперь перейдем непосредственно к инструкции.

Установка x11vnc в Ubuntu 16.04

Один из самых популярных VNC серверов для Linux это x11vnc, его мы и будем устанавливать. Этот VNC сервер распространяется с открытым исходным кодом и его особенность в том, что он позволяет подключиться к уже существующему сеансу X сервера. Это удобно не только для доступа через интернет, но и для того чтобы по локальной сети управлять компьютером с помощью смартфона.

Но перед тем как перейти к настройке, нужно установить саму программу, она есть в официальных репозиториях, поэтому проблем с этим возникнуть не должно. Для установки выполните:

sudo apt install x11vnc

Настройка x11vnc в Ubuntu

Когда установка VNC ubuntu будет завершена, мы сможем перейти к настройке. Сначала создадим пароль для нашего сервера:

x11vnc -storepasswd "пароль" /etc/x11vnc.pass


Команда x11vnc с опцией -storepasswd сохраняет пароль в файл, предварительно его зашифровав. Сделаем этот файл доступным для чтения, чтобы x11vnc смог его прочитать:

sudo chmod ugo+r /etc/x11vnc.pass

Чтобы запустить программу прямо сейчас и проверить работает ли она вы можете воспользоваться такой командой:

x11vnc -noxdamage -shared -dontdisconnect -many -noxfixes -rfbauth /etc/x11vnc.pass


  • -rfbauth — использовать пароль для аутентификации пользователей из файла;
  • -rfbport — порт, на котором будет работать VNC сервер;
  • -bg — работать в фоновом режиме;
  • -shared — разрешить подключаться одновременно нескольким пользователям;
  • -dontdisconnect — не отключать подключенных пользователей при подключении нового;
  • -many — не завершать работу сервера после отключения первого клиента.

После выполнения команды вы можете взять другое устройство и попытаться подключиться к этому по VNC, все должно работать. Можно попробовать подключиться к серверу локально или с другой машины. По умолчанию используется порт 5900:

Вот такую рекурсию можно поймать, если подключаться локально:


Автозагрузка x11vnc с помощью systemd

Если все верно, можно создать скрипт для автоматического запуска во время старта системы. Для этого мы будем использовать systemd:

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -noxdamage -shared -dontdisconnect -many -noxfixes -rfbauth /etc/x11vnc.pass
[Install]
WantedBy=multi-user.target

Конфигурационный файл готов, и теперь вы можете добавить его в автозагрузку, но перед этим заставим Systemd перечитать свои конфигурационные файлы:

sudo systemctl daemon-reload

И делаем автозапуск x11vnc ubuntu:

sudo systemctl enable x11vnc.service

Также можно запустить программу сейчас:

sudo systemctl start x11vnc.service

sudo systemctl status x11vnc.service

Кроме того, если вам нужна установка x11vnc таким образом, чтобы иметь доступ к уже запущенной сессии X11, вы можете создать такой скрипт:

sudo vi /bin/x11vncstart

!/bin/bash
x11vnc -rfbauth /etc/x11vnc.pass -noxdamage -bg -shared -dontdisconnect -many -noxfixes &

Затем дайте этому скрипту права на выполнение:

chmod ugo+x /bin/x11vncstart

Теперь вы можете запускать этот скрипт когда нужен x11vnc или добавить его в автозагрузку с помощью утилиты автоматически запускаемые приложения. Как это сделать описано в статье как добавить скрипт в автозагрузку Ubuntu.

Выводы

Вот и все, настройка vnc Ubuntu завершена. Теперь вы знаете как выполняется установка x11vnc в Ubuntu 18.04. Это не настолько сложно, как может показаться на первый взгляд. Если вам нужен другой VNC сервер, который бы позволял создавать новые сеансы, а не подключаться к существующим, то смотрите статью о том как установить TigerVNC в Ubuntu. Надеюсь информация была полезной, если остались вопросы, спрашивайте в комментариях!





Оцените статью:

(7 оценок, среднее: 4,71 из 5)

Об авторе

19 комментариев

x11vnc.service - Start x11vnc at startup.
Loaded: loaded (/lib/systemd/system/x11vnc.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Пт 2016-12-16 14:06:40 MSK; 7min ago
Process: 2571 ExecStart=/usr/bin/x11vnc -rfbauth /etc/x11vnc.pass -noxdamage -shared -dontdisconnect -many -noxfixes (code=exited, status=1/FAILURE)
Main PID: 2571 (code=exited, status=1/FAILURE)

Решил проблему так : rm -r /tmp/.X11-unix в статусе пишет все ок,только vnc-сервер по моему не стартует в автозагрузке

Не работает .
Статья написана просто так, видимо ничего не проверялось на практике.
Сервис не стартует и все тут.

Всё работает. Поменяйте строку запуска на ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

Спасибо! Помогло!
И кстати многие команды надо выполнять с sudo!

x11vnc как поставить пароль что при входе удаленно на компьютер запрашивал пароль
пробовал так -storepasswd пишет что пароль изменил но при входе удаленно не запрашивает сразу попадаю на компьютер

-rfbauth — использовать пароль для аутентификации пользователей из файла;

Нет, у меня руки кривые!

Все сделал по инструкции, все работает - но до смены пользователя. В наличии Linux Mint 18.2, два пользователя. Если перезагрузить компьютер, то можно подключиться по порту 5900 и войти под любым пользователем, если теперь выбрать Завершение сеанса или Сменить пользователя - получаем черный экран с мышкой, помогает только рестарт компьютера. Как можно это решить, нужен VNC к текущей сессии с возможностью подключения до входа пользователя.

добавьте к стоке запуска параметр -auth guess
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

Просьба к автору спасибо за статью, просто и доступно но в список параметров для старта все же можно добавить -auth guess
У меня без нее не стартовало и судя по коментам не только у меня.
И еще для читателей если будете отлаживать почему сервис не стартует удобно смотреть логи командой
journalctl -b -u x11vnc.service

"Этот VNC сервер распространяется с открытым исходным кодом и позволяет подключиться к уже существующему сеансу X сервера или создать новый. "
А как создать новый сеанс Х?

Пытаюсь vnc прикрутить на xubuntu 18.04, с текущей сессий запускаю сервер - работает, при перезапуске не стартует.

Настроил по статье x11vnc. Сначала все заработало при запуске из терминала командой x11vnc -dontdisconnect -auth /home/user/.Xauthority -rfbauth /home/user/.vnc/passwd -display :0 -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -noipv6. user - это реальный пользователь. Затем настроил запуск сервиса, как описано в статье. Перегрузился и все не работает. Убрал сервис, автозагрузку, запуск, все рано уже никак не работает. Ни с терминала командой, ни после перегрузки. Сосем! Пробовал и -auth guess, Запутался совсем. Гуглил, но все тоже самое, у всех все просто и как уже описано выше. Ubuntu 20.04 LTS. Кто нибудь может подсказать?

Секция [Service] файла /lib/systemd/system/x11vnc.service для дисплейного менеджера SDDM должна быть следующего вида:
[Service]
Type=simple
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SDDMXAUTH=$(/usr/bin/find /var/run/sddm/ -type f)"
ExecStart=/usr/bin/x11vnc -display :0 -auth $ -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared

автозагрузка сервиса не работает хоть убейся
советы в комментариях тоже не помогают
статья фигня

Добрый день.
Прошу подсказать в вопросе. Пытаюсь подключить второй монитор через x11vnc таким образом чтобы он не дублировал основной монитор, а расширял его пространство.
Как это сделать?

Вместо -auth guess попробуйте -auth /run/user/1000/gdm/Xauthority
или какой там путь в параметре -auth выдаёт ps aux | grep Xorg.
У меня Ubuntu Desktop 20.04.2 и путь /run/user/1000/gdm/Xauthority



Некоторые пользователи арендуют относительно недорогие 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: тут все зависит от личных предпочтений, однако выбор ПО напрямую влияет на потребность в оперативной памяти и вычислительных ядрах.

image

Установка окружения рабочего стола со всеми зависимостями выполняется следующей командой:


Дальше необходимо инсталлировать сервер VNC:


Запускать его с правами суперпользователя — плохая идея. Создаем пользователя и группу:


Добавим пользователя в группу sudo, чтобы он мог решать связанные с администрированием задачи. Если такой потребности нет, этот шаг можно пропустить:


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

/.vnc/. Длина пароля может быть от 6 до 8 символов (лишние обрезаются). При необходимости также задается пароль только для просмотра, т.е. без доступа к клавиатуре и мыши. Следующие команды выполняются от имени пользователя vnc:


По умолчанию протокол RFB использует диапазон TCP-портов от 5900 до 5906 — это т.н. порты дисплея, каждый из которых соответствует экрану X-сервера. При этом порты ассоциированы с экранами от :0 по :6. Запущенный нами экземпляр сервера VNC слушает порт 5901 (экран :1). Прочие экземпляры могут работать на других портах с экранами :2, :3 и т. д. Перед дальнейшей настройкой нужно остановить сервер:

При запуске 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, чтобы показать незначительное потребление виртуальной машиной вычислительных ресурсов. Дальше все будет зависеть от пользовательских приложений.

В этом руководстве описаны действия, необходимые для установки и настройки VNC-сервера в Ubuntu 18.04. Мы также покажем вам, как безопасно подключиться к серверу VNC через туннель SSH.

Подготовка

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

Установка среды рабочего стола

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

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

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

В зависимости от вашей системы загрузка и установка пакетов Xfce может занять некоторое время.

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

Также в репозиториях Ubuntu доступно несколько различных серверов VNC, таких как TightVNC , TigerVNC и x11vnc . Каждый сервер VNC имеет свои сильные и слабые стороны с точки зрения скорости и безопасности.

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

Введите следующую команду, чтобы установить TigerVNC на свой сервер Ubuntu:

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

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

При первом vncserver команды vncserver она создает и сохраняет файл паролей в

/.vnc . Этот каталог будет создан, если он отсутствует.

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

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

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

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

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

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

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

Создание файла модуля Systemd

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

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

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

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

Следующим шагом является включение файла модуля с помощью следующей команды:

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

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

Убедитесь, что служба успешно запущена:

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

Настроить SSH-туннелирование в Linux и macOS

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

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

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

Настроить SSH-туннелирование в Windows

Если вы используете Windows, вы можете настроить SSH-туннелирование с помощью SSH-клиента PuTTY .

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

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

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

Подключение с помощью Vncviewer

Теперь, когда туннель SSH создан, пора открыть ваш Vncviewer и подключиться к VNC Server по адресу localhost:5901 .

Вы можете использовать любую программу просмотра VNC, такую как TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre и VNC Viewer для Google Chrome .

Мы будем использовать TigerVNC. Откройте средство просмотра, введите localhost:5901 и нажмите кнопку « Connect .

При появлении запроса введите пароль пользователя , и вы должны увидеть рабочий стол Xfce по умолчанию. Это будет выглядеть примерно так:

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

Выводы

К настоящему времени у вас должен быть запущен и запущен VNC-сервер, и вы можете легко управлять своим сервером Ubuntu 18.04 с локального настольного компьютера, используя простой в использовании графический интерфейс.

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

Читайте также: