- Установка VNC-сервера на Linux Ubuntu и CentOS
- Подготовка
- Обновление компонентов
- Ubuntu
- CentOS
- Установка окружения
- Ubuntu
- CentOS
- Установка TightVNCServer
- Ubuntu
- CentOS
- Настройка фаервола CentOS
- Настройка VNC-сервера
- Подготовка VNC для работы с окружением XFCE
- Настройка автозапуска
- Обеспечение безопасности VNC
- Настройка туннелирования трафика через SSH
- Подключение
- Windows
- Подключение к сессии VNC
- Ubuntu Documentation
- Introduction
- Common security options
- x11vnc
- VPS на Linux с графическим интерфейсом: запускаем сервер VNC на Ubuntu 18.04
- Оглавление:
- Выбор сервера VNC
- Установка и настройка
- Запуск службы через systemd
- Подключение к рабочему столу
Установка VNC-сервера на Linux Ubuntu и CentOS
Содержание:
Virtual Network Computing (VNC) – система управления удалённым рабочим столом, использующая протокол RFB ( Remote FrameBuffer , англ. «удалённый кадровый буфер»). Соединение осуществляется между двумя устройствами: клиентом (управляющее) и сервером (подчиняющееся).
Взаимодействие между системами происходит путём передачи откликов с периферии клиента (мышь, клавиатура и т. д.) и ретрансляции изображения с удалённого компьютера. Для создания сессии, на каждой из сторон должно быть установлено соответствующее ПО: VNC-клиент (VNC Viewer) и VNC-сервер (VNC Server).
Подробнее узнать, что из себя представляет технология управления удалённым рабочим столом можно здесь.
Далее будет рассказано о том, как установить VNC на Linux и обезопасить подключение. Инструкция подойдёт для двух популярных дистрибутивов: Ubuntu (18.04 и 20.04) и CentOS 7. В качестве VNC-сервера будет использоваться TightVNCServer.
Подготовка
Обновление компонентов
Перед началом выполнения каких-либо действий нужно обновить компоненты системы. Для CentOS также будет установлены дополнительные пакеты: EPEL репозиторий и текстовой редактор Nano.
Ubuntu
CentOS
Установка окружения
Управление системой через подключение VNC осуществляется посредством графической среды. За основу в статье будет взято окружение XFCE, стабильно работающее в связке с TightVNCServer. Чтобы установить эту оболочку со всеми дополнениями, нужно ввести следующую команду в терминал:
Ubuntu
CentOS
Установка TightVNCServer
Инсталлировать пакет TightVNCServer вместе с зависимостями можно командой:
Ubuntu
CentOS
Настройка фаервола CentOS
На серверах под управлением CentOS брандмауэр по умолчанию блокирует доступ к сети сторонним программам. Чтобы дать разрешение TightVNCServer открывать сетевые порты, понадобится ввести команду:
Теперь нужно применить изменения:
Настройка VNC-сервера
Для начала необходимо произвести «пробный» запуск TightVNCServer, чтобы программа создала конфиги, которые позже понадобятся для настройки VNC. Все файлы сохраняются в домашней папке пользователя, от имени которого запускается программа.
Запустить VNC-сервер можно следующей командой:
Далее программа попросит придумать пароль (от 6 до 8 символов), который в дальнейшем будет использоваться для подключения к сессии VNC.
Сменить пароль можно в любой момент командой «vncpasswd».
А также пользователю будет задан вопрос: «Would you like to enter a view-only password (y/n)?» («Вы хотите ввести пароль только для просмотра (да/нет)?») Функция позволяет подключиться к сессии для демонстрации. То есть пользователь будет видеть всё, что происходит на экране, но не сможет управлять удалённым компьютером. Если применять возможность не планируется, то стоит выбрать ответ «n» («нет»).
Ещё важная строка, на которую нужно обратить внимание: «New ‘X’ desktop is test:1» (Ubuntu) или «New ‘test.program.ru:1 (username)’» (CentOS). В предложении говориться о создании новой сессии с порядковым номером «1». Таких «дисплеев» можно запустить несколько и все они будут привязаны к определённым сетевым портам. Например, сессия «1» будет «висеть» по умолчанию на 5901 порте, сессия с номером «2» на 5902 и так далее по порядку.
Подготовка VNC для работы с окружением XFCE
Чтобы при подключении к сессии запускалась графическая среда, необходимо выполнить настройку VNC для работы с XFCE.
Не стоит забывать, что все действия требуется выполнять с одной и той же учётной записи Linux.
Для начала нужно остановить работающий дисплей. Чуть раньше говорилось, что ему присвоен порядковый номер «1», поэтому команда составляется следующим образом:
Теперь нужно удалить старый конфигурационный файл, отвечающий за запуск графической оболочки:
И создать вместо него новый:
Откроется пустой документ, в который необходимо добавить следующий код:
Ubuntu
CentOS
Для сохранения нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить внесений изменений нажатием «Enter».
Остаётся сделать созданный файл исполняемым:
Настройка автозапуска
После перезагрузки удалённого компьютера, запуск VNC-сервера не будет выполняться самостоятельно. Это можно исправить, добавив службу автозапуска.
Для начала нужно создать скрипт, при выполнении которого будет запускаться TightVNCServer с определённым набором параметров:
Теперь в открывшийся пустой файл нужно занести следующий код:
Переменные, на которые стоит обратить внимание:
- «DISPLAY» – номер запускаемой сессии;
- «DEPTH» – глубина цвета;
- «GEOMETRY» – разрешение экрана.
Остаётся сделать файл исполняемым, чтобы скрипт стал доступен для запуска:
Теперь можно использовать следующие простые команды, чтобы управлять VNC-сервером:
Скрипт готов, но теперь нужно сделать так, чтобы запуск производился каждый раз при загрузке системы. Для этого создаётся юнит:
В создаваемый файл вносится следующий код:
В переменную «User» вводится логин пользователя Linux, от имени которого будет запускаться VNC-сервер.
Теперь нужно сохранить файл и добавить созданную службу в автозагрузку:
Для применения настроек остаётся перезапустить демон systemd и VNC-сервер следующими командами:
Базовая настройка VNC выполнена. Подключиться к сессии можно уже сейчас, но рекомендуется сначала обезопасить соединение, если VNC планируется использовать в публичной сети.
Обеспечение безопасности VNC
Использовать VNC в «голом» виде не рекомендуется по нескольким причинам:
- Отсутствие шифровки трафика.
- На сервере открыты порты, которые может атаковать злоумышленник.
- Пароль ограничен 8 символами.
Всё это делает использование VNC небезопасным. Но есть решение проблемы: туннелирование трафика через протокол SSH, который надёжнее реализован и поддерживает шифровку проходящих данных.
Настройка туннелирования трафика через SSH
Для начала нужно запретить доступ к VNC-серверу извне, чтобы исключить возможность атаки по открытому порту (5901, 5902 и т. д.). Для этого необходимо отредактировать скрипт, созданный на ранних этапах настройки TightVNCServer:
В файле заменяются строки:
«-localhost» – разрешает подключаться к порту только с самого сервера.
После сохранения скрипта необходимо перезагрузить VNC для применения изменений:
Подключение
Выполнить подключение с туннелированием трафика на Unix-системах можно с помощью встроенной консольной утилиты. Команда составляется следующим образом:
Значения, которые нужно изменить на собственные:
- «user» – имя пользователя;
- «xxx.xxx.xxx.xxx» – IP-адрес сервера.
Утилита запросит пароль для входа в учётную запись. Внешне подключение будет ничем не отличаться от обычного соединения с сервером через SSH. Туннелирование будет работать до тех пор, пока сессия не будет закрыта.
Windows
Установка соединения на Windows будет рассмотрена на примере распространённого клиента Putty.
Алгоритм подключения
- Открыть программу и перейти по пути: «Соединение» -> «SHH» -> «Туннели».
- В поле «Исходный порт» нужно ввести значение «5901», а в «Назначение» подставить «localhost:5901». Для применения параметров необходимо нажать «Добавить».Можно создать несколько таких профилей, изменив «5901» на значения других портов («5902», «5903» и т. д.), если планируется подключить сразу несколько сессий.
- Теперь можно вернуться в исходный раздел «Сеанс», ввести данные для подключения к серверу через SSH и нажать «Соединиться».
Чтобы заново не проходить операцию настройки каждый раз, можно сохранить параметры в профиль. Для этого нужно ввести произвольное имя в поле «Управление сеансами» и нажать «Сохранить».
- В открывшемся окне нужно ввести данные для подключения к серверу. Туннелирование начинает работать с этого момента и проходит незаметно для пользователя. Для поддержания соединения достаточно не прерывать сессию SSH.
Подключение к сессии VNC
Подключиться по VNC к Linux можно с помощью клиента TightVNC Viewer, который доступен для загрузки на официальном сайте. Для остальных программ алгоритм установки соединения будет аналогичен.
Сначала нужно открыть TightVNC Viewer и в поле «Remote Host» ввести внешний IP-адрес сервера и порт, разделяя их двоеточием («:»). Если подключение осуществляется с туннелированием трафика, то вместо IP-адреса подставляется стандартное значение локального хоста (например, «localhost» или «127.0.0.1»). Для установки соединения нужно нажать «Connect».
Откроется окно, в котором программа запросит пароль. Для подтверждения остаётся нажать «ОК».
В итоге появится изображение рабочего стола с удалённого сервера.
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Источник
Ubuntu Documentation
Introduction
A VNC server is a program that shares a desktop with other computers over the Internet. You will need a VNC server if you want other people to see your desktop. Every VNC server has different strengths and weaknesses and is appropriate for different uses. This page will discuss each of the VNC servers available in Ubuntu, and ways to configure them for most common uses of VNC.
Common security options
The most important thing when setting up a VNC server is to only let the right people access your desktop. The safest way to do that is usually to have someone sitting at the desktop deciding who gets to use it, but that’s not always practical — for example, if you want to log in to your own computer from somewhere else.
If you want to confirm each connection manually, you should look for these options:
Request access each time — pop a window up asking whether to allow each connection as it comes in.
view-only access — allow VNC clients to view the destkop, but not to change anything. As well adding a little security, this avoids problems with both of you fighting over control of the mouse.
Using these two options will give you the most security. Requesting access each time will ensure that nobody can connect without you noticing, and view-only access will mean that they can’t change anything without asking you to do it for them.
If you want to access your desktop when nobody is sitting at it, these options will be more useful:
Only allow local connections — only let people connect if they already have access to your computer.
Start your VNC server in «once» mode — tell your VNC server to allow one connection, then block anything after that.
Set a password — require people to send a password before they can connect.
These three options should give you a secure set-up, so long as they’re used with port-forwarding. Only allowing local connections means that only people with user accounts on your computer can access your desktop. Starting the server in «once» mode means that people with user accounts on your computer would have to log in to your desktop between the time you start your VNC server and the time you connect from your VNC client. Setting a password means that, if anyone did try to connect in that brief interval, they probably wouldn’t be able to get in before you noticed and stopped the server.
Note: you must set a password if you want to use the in-built VNC client in Mac OS X.
Vino is the default VNC server in Ubuntu to share your existing desktop with other users.
To configure vino from within GNOME, go to System > Preferences > Remote Desktop
To set vino to request access each time, tick Allow other users to view your desktop in the Remote Desktop configuration window.
There’s no way to set vino to only listen for the next connection.
To set a password, tick Require the user to enter this password:, and enter a hard-to-guess password.
To put vino in view-only mode, untick Allow other users to control your desktop.
To only allow local connections, open a terminal and run the command:
To allow connections from anywhere, open a terminal and run the command:
x11vnc
x11vnc is a VNC server that is not dependent on any one particular graphical environment. Also, it facilitates using in a minimal environment, as it has a tcl/tk based GUI. It can be started while your computer is still showing a login screen.
It is helpful to ensure you have uninstalled any other VNC programs first so that they don’t interfere with x11vnc.
As a quick proof of concept to test your connectivity, as per the man page, one may create a password file via:
It will respond with:
One may execute the following in a terminal:
Here a few settings that would be common to adjust depending on your environment:
To set x11vnc to request access each time when set without a password, include the -nopw -accept popup:0 options.
To set x11vnc to only listen for the next connection, include the -once option.
To set x11vnc to continually listen for connections, include the -forever option.
To put x11vnc in view-only mode, include the -viewonly option.
To set x11vnc to only allow local connections, include the -localhost option.
Источник
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, чтобы показать незначительное потребление виртуальной машиной вычислительных ресурсов. Дальше все будет зависеть от пользовательских приложений.
Источник