Настройка vnc на centos 8

Обновлено: 05.07.2024

Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая протокол RFB (англ. Remote FrameBuffer, удалённый кадровый буфер).

Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть.

Система VNC платформонезависима: VNC-клиент, называемый VNC viewer, запущенный на одной операционной системе, может подключаться к VNC-серверу, работающему на любой другой ОС.

Существуют реализации клиентской и серверной части практически для всех операционных систем, в том числе и для Java (включая мобильную платформу J2ME).

К одному VNC-серверу одновременно могут подключаться множественные клиенты.

Наиболее популярные способы использования VNC — удалённая техническая поддержка и доступ к рабочему компьютеру из дома.

Установка tigervnc-server

sudo yum install tigervnc-server

Залогиньтесь под пользователем, которому вы хотите дать доступ по vnc

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

view-only password это пароль для доступа только с правами на просмотр. Действия мыши и клавиатуры во время такого доступа ограничены.

Выполните первый и второй шаги из Quick HowTo

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@: 1 .service

Обратите внимание на 1 - таким образом указывается номер дисплея для данной версии сервера. Можно было выбрать другое число, главное запомнить этот выбор.

sudo vi /etc/systemd/system/vncserver@\: 1 .service

ExecStart=/usr/bin/vncserver_wrapper <USER> %i

Замените <USER> на имя вашего пользователя. (моего зовут andrei)

Можно вручную через vi а можно с помощью sed

Если вашего пользователя зовут vncuser команда будет выглядеть так:

Запуск VNC сервера

Чтобы VNC sever запускался при загрузке системы выполните

systemctl enable vncserver@:1

Запустить VNC sever вручную

sudo systemctl daemon-reload
sudo systemctl start vncserver@:1

Проверить статус VNC сервера

systemctl status vncserver@:1

Проверить, что vnc server слушает на порту 5901 можно командой

ss -tulpn| grep vnc

tcp LISTEN 0 5 *:5901 *:* users:(("X vnc ",pid=1330,fd=9)) tcp LISTEN 0 128 *:6001 *:* users:(("X vnc ",pid=1330,fd=6)) tcp LISTEN 0 5 [::]:5901 [::]:* users:(("X vnc ",pid=1330,fd=10)) tcp LISTEN 0 128 [::]:6001 [::]:* users:(("X vnc ",pid=1330,fd=5))

Открыть порт в Firewall

Теперь порт 5901 нужно открыть в firewall

sudo firewall-cmd --add-port=5901/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

19999/tcp 5901/tcp

Как вы можете убедиться - порт 5901 успешно добавлен в список открытых

Если вам вдруг стало интересно - что за порт 19999 - его использует Locust

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

Теперь можно установить VNC клиент, например, Remmina

sudo yum install remmina

И зайти на VNC сервер введя нужный IP адрес и порт :5901

Подключение к Centos по VNC изображение с сайта www.andreyolegovich.ru

Введите пароль пользователя для которого вы создали vncpasswd

Подключение к Centos по VNC изображение с сайта www.andreyolegovich.ru

Остановить VNC сервер

systemctl stop vncserver@:1

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to manage system services or units. Authenticating as: andrei Password: ==== AUTHENTICATION COMPLETE ===

Изменить порт и дисплей

Если скопировать существующий файл /etc/systemd/system/vncserver@: 1 .service

cp /etc/systemd/system/vncserver@: 1 .service /etc/systemd/system/vncserver@: 0 .service
systemctl daemon-reload

Обратите внимание на предупреждение Warning: localhost.localdomain:0 is taken because of /tmp/.X0-lock

Файл .X0-lock нужно удалить

● vncserver@:0.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2021-11-20 17:16:39 EET; 4s ago Process: 9513 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 9516 (vncserver_wrapp) CGroup: /system.slice/system-vncserver.slice/vncserver@:0.service └─9516 /bin/sh /usr/bin/vncserver_wrapper andrei :0 Nov 20 10:01:50 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC). Nov 20 10:01:50 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[9516]: WARNING: The first attempt to start Xvnc failed, possibly because the font Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[9516]: catalog is not properly configured. Attempting to determine an appropriate Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[9516]: font path for this system and restart Xvnc using that font path .

Дисплей 0

Если вы пытаетесь запустить сервер на дисплее 0 и получаете ошибку

● vncserver@:0.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset: Active: failed (Result: exit-code) since Thu 2021-03-18 15:50:32 EET; 2min 8s ago Process: 4260 ExecStart=/usr/bin/vncserver_wrapper andrei %i (code=exited, status= Process: 4255 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 Main PID: 4260 (code=exited, status=2) Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[4260]: (EE) Cannot establish Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransSocketUNIX Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransMakeAllCOT Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[4260]: (EE) Nov 20 10:01:50 localhost.localdomain vncserver_wrapper[4260]: Fatal server error:

Убедитесь, что у вас не запущена X Window System обычно она занимает дисплей 0.


В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить sudo к командам для получения привилегий root. Я покажу вам пошаговую установку VNC на сервере CentOS 8.

Установите VNC Server на CentOS 8

Шаг 1. Во-первых, давайте начнем с проверки актуальности вашей системы.

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

Выполните следующую команду, чтобы установить среду рабочего стола Gnome;

Шаг 3. Установка VNC Server на CentOS 8.

Мы установим сервер TigerVNC, он доступен в репозиториях CentOS по умолчанию, для его установки введите:

После установки запустите команду vncserver, чтобы создать начальную конфигурацию и установить пароль:

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

Шаг 4. Настройка VNC Server.

Следующим шагом является настройка TigerVNC для использования Gnome. Сервер VNC использует файл

/ .vnc / xstartup для запуска приложений при создании нового рабочего стола:

Отредактируйте его следующим образом:

Шаг 5. Создание файла модуля Systemd.

Теперь создадим файл модуля Systemd:

Затем скопируйте файл модуля vncserver по умолчанию:

Сообщите systemd о существовании нового файла пользовательских модулей:

Шаг 6. Доступ к VNC-серверу.

Теперь вы можете подключить VNC-сервер, используя IP-адрес и порт (пример: 192.168.2.109:5), и вам будет предложено ввести пароль, введите пароль, который вы создали ранее.

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

Поздравления! Вы успешно установили VNC Server . Благодарим за использование этого руководства для установки VNC в системе CentOS 8. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт VNC .


1. Установка VNCserver на CentOS/RedHat/Fedora:

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

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

Если вы используете CentOS 6, то выполните yum groupinstall Desktop чтобы установить графическую оболочку.

У меня будет создано 2 пользователя (captain, vncuser) и им будет разрешено подключаться к установленному серверу, по этому я создам их сейчас и мы продолжим настройку:

Установим сейчас пароли для пользователей:

Далее необходимо отредактировать соединение с сервером ( разрешить подключение именно указанным пользователям):

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

1. Для пользователя captain:

2. Для пользователя vncserver:

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

Должен в папках ( у каждого из пользователей) появится файл под названием passwd. Если нет, значит что то сделали не так!

Добавим сервер VNC в автозагрузку ОС:

Для того чтобы запустить или остановить сервер ВНЦ, используйте:

Нужно еще добавить для каждого пользователя скрипт запуска Х-в:

Можно просто перейти в директорию /home/your_user_name/.vnc/ и скачать готовый скрипт, чтобы не писать его вручную ( мне кажется, так проще будет):

Выставим права 777 для данного файла ( у меня вроде бы не работало без этого, мучался и искал долго ошибку тупую):

Если установлен IPtables, то нужно добавить некоторые правила:

После чего перезапускаем ипитаблес:

На этом все, теперь нужно только запустить сервер:

Пользователь captain будет запущен если ввести:
178.62.44.69:5901

После чего попросят ввести пароль.

Пользователь vncuser будет запущен если ввести:
178.62.44.69:5902

После чего тоже попросят ввести пароль.

ПРИМЕЧАНИЕ! Если долго не использовать графическую оболочку ( когда вы подключились уже), то она заблокируется. Решение только одно- это перезапустить сам сервер и подключится к нему заново!

Настройка VNC зашифрования через SSH туннель

Вы будете подключать через SSH туннель. Вы должны быть подключены по SSH для пользователя на компьютере. Для этого примера, пользователь captain. Это имя пользователя учетной записи должно существовать на машине и должен быть установлен пароль или ключ доступа SSH. Система имена пользователей и пароли Linux и VNC не обязаны быть

Перезапускаем ВНЦ сервер:

Проверяем, только запускаем на другом компьютере (машине) и тестируем сервер с ВНЦ:

Установка и настройка удаленного доступа через vnc-ltsp-config

Для включения удаленного доступа для входа через VNC-клиента к системе Centos. Когда VNC-клиент подключается к одному из настроенных портов, пользователь будет дано экран входа. Сессия не будет постоянной. Когда пользователь выходит из системы, сеанс завершается.
Нужно подключить репозиторий EPEL и потом уже выполнять команду:

Подредактируем настройки GDM:

Это добавит возможность получить следующие основанные сеансовые соединение по умолчанию для VNC-клиента:

параметры соединений сессий vnc-client

параметры соединений сессий vnc-client

Настройка 2-х соединений консольных сессий

x11vnc является способ просмотра удаленно и взаимодействовать с реальными X дисплеев (т.е. дисплей, соответствующий физическому монитора, клавиатуры и мыши) с любой VNC Viewer. Таким образом, он играет роль для Unix / X11, что WinVNC играет для Windows.

x11vnc с опцией adhoc

Установим мы его сейчас.

Устанавливаем только что созданный пакет:

Запускаем процесс x11vnc на хосте к VNC-клиенту:

Затем подключите (без пароля) через VNC-клиент к IP / имя хоста и порт отметил командой x11vnc. По умолчанию, x11vnc позволит соединения от всех интерфейсов. Настройки брандмауэра на основе хоста возможно, должны быть изменены.

Вы можете совместить это с SSH туннелирования:

3 thoughts on “ Установка VNCserver на CentOS/RedHat/Fedora ”

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

Для начала проверяем какая локаль прописана:

После чего, можно добавить в bashrc:

И прописать следующие строки:

Так же, можно подключатся к VNC следующим образом:

Более детально, я расскажу в своей статье.

Спасибо за ответ! Сделал но к сожалению так же копируется.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.


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-сервер можно следующей командой:

TightVNCServer

Далее программа попросит придумать пароль (от 6 до 8 символов), который в дальнейшем будет использоваться для подключения к сессии VNC.

Сменить пароль можно в любой момент командой «vncpasswd».

А также пользователю будет задан вопрос: «Would you like to enter a view-only password (y/n)?» («Вы хотите ввести пароль только для просмотра (да/нет)?») Функция позволяет подключиться к сессии для демонстрации. То есть пользователь будет видеть всё, что происходит на экране, но не сможет управлять удалённым компьютером. Если применять возможность не планируется, то стоит выбрать ответ «n» («нет»).

Подготовка VNC для работы с окружением XFCE

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

Не стоит забывать, что все действия требуется выполнять с одной и той же учётной записи Linux.

Для начала нужно остановить работающий дисплей. Чуть раньше говорилось, что ему присвоен порядковый номер «1», поэтому команда составляется следующим образом:

Теперь нужно удалить старый конфигурационный файл, отвечающий за запуск графической оболочки:

И создать вместо него новый:

Откроется пустой документ, в который необходимо добавить следующий код:

Ubuntu

CentOS

Для сохранения нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить внесений изменений нажатием «Enter».

Остаётся сделать созданный файл исполняемым:

Настройка автозапуска

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

Алгоритм подключения
  1. Открыть программу и перейти по пути: «Соединение» -> «SHH» -> «Туннели».
  2. В поле «Исходный порт» нужно ввести значение «5901», а в «Назначение» подставить «localhost:5901». Для применения параметров необходимо нажать «Добавить».Можно создать несколько таких профилей, изменив «5901» на значения других портов («5902», «5903» и т. д.), если планируется подключить сразу несколько сессий.
  3. Теперь можно вернуться в исходный раздел «Сеанс», ввести данные для подключения к серверу через SSH и нажать «Соединиться».

Чтобы заново не проходить операцию настройки каждый раз, можно сохранить параметры в профиль. Для этого нужно ввести произвольное имя в поле «Управление сеансами» и нажать «Сохранить».

  1. В открывшемся окне нужно ввести данные для подключения к серверу. Туннелирование начинает работать с этого момента и проходит незаметно для пользователя. Для поддержания соединения достаточно не прерывать сессию SSH.

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

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

Сначала нужно открыть TightVNC Viewer и в поле «Remote Host» ввести внешний IP-адрес сервера и порт, разделяя их двоеточием («:»). Если подключение осуществляется с туннелированием трафика, то вместо IP-адреса подставляется стандартное значение локального хоста (например, «localhost» или «127.0.0.1»). Для установки соединения нужно нажать «Connect».

TightVNC Viewer

Откроется окно, в котором программа запросит пароль. Для подтверждения остаётся нажать «ОК».

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