VNC CentOS

Содержание
Введение
Установка tigervnc-server
Запустить VNC сервер
Проверить состояние
Открыть порт в Firewall
Подключение к VNC серверу
Остановить VNC сервер
Изменить порт
Дисплей 0
Изменить пароль
Скрипты для быстрой установки
Похожие статьи

Введение

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

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

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

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

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

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

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

Перед установкой VNC сервера убедитесь, что установлен X сервер

Выполните

sudo yum -y install tigervnc-server

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

vncpasswd

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

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

sudo vi /lib/systemd/system/vncserver@.service

# The vncserver service unit file # # Quick HowTo: # 1. Copy this file to /etc/systemd/system/vncserver@.service # 2. Replace <USER> with the actual user name and edit vncserver # parameters in the wrapper script located in /usr/bin/vncserver_wrapper # 3. Run `systemctl daemon-reload` # 4. Run `systemctl enable vncserver@:<display>.service` # # DO NOT RUN THIS SERVICE if your local area network is # untrusted! For a secure way of using VNC, you should # limit connections to the local host and then tunnel from # the machine you want to view VNC on (host A) to the machine # whose VNC output you want to view (host B) # # [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB # # this will open a connection on port 590N of your hostA to hostB's port 590M # (in fact, it ssh-connects to hostB and then connects to localhost (on hostB). # See the ssh man page for details on port forwarding) # # You can then point a VNC client on hostA at vncdisplay N of localhost and with # the help of ssh, you end up seeing what hostB makes available on port 590M # # Use "-nolisten tcp" to prevent X connections to your VNC server via TCP. # # Use "-localhost" to prevent remote VNC clients connecting except when # doing so through a secure tunnel. See the "-via" option in the # `man vncviewer' manual page. [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver_wrapper <USER> %i ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target

Выполните первый и второй шаги из 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

sudo sed -i 's/wrapper\ <USER>/wrapper\ andrei/' /etc/systemd/system/vncserver@\:1.service

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

sudo sed -i 's/wrapper\ <USER>/wrapper\ vncuser/' /etc/systemd/system/vncserver@\:1.service

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

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

systemctl enable vncserver@:1

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

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

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

systemctl status vncserver@:1

vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-03-16 13:49:55 EET; 3min 56s ago Process: 23138 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 23145 (vncserver_wrapp) CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ├─23145 /bin/sh /usr/bin/vncserver_wrapper andrei :1 └─24097 /bin/sh /usr/bin/vncserver_wrapper andrei :1 Mar 28 11:54:55 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 28 11:54:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[23145]: New 'localhost.localdomain:1 (andrei)' desktop is localhost.localdomain:1 Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[23145]: Creating default startup script /home/andrei/.vnc/xstartup Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[23145]: Creating default config /home/andrei/.vnc/config Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[23145]: Starting applications specified in /home/andrei/.vnc/xstartup Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[23145]: Log file is /home/andrei/.vnc/localhost.localdomain:1.log

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

ss -tulpn| grep vnc

tcp LISTEN 0 5 *:5901 *:* users:(("Xvnc",pid=1330,fd=9)) tcp LISTEN 0 128 *:6001 *:* users:(("Xvnc",pid=1330,fd=6)) tcp LISTEN 0 5 [::]:5901 [::]:* users:(("Xvnc",pid=1330,fd=10)) tcp LISTEN 0 128 [::]:6001 [::]:* users:(("Xvnc",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.eth1.ru
Подключение к Centos по VNC через Remmina
www.eth1.ru

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

Подключение к Centos по VNC изображение с сайта www.eth1.ru
Подключение к Centos по VNC через Remmina
www.eth1.ru
Подключение к Centos по VNC изображение с сайта www.eth1.ru
Подключение к Centos по VNC через Remmina
www.eth1.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

==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon === Authentication is required to reload the systemd state. Authenticating as: andrei Password: ==== AUTHENTICATION COMPLETE === [andrei@localhost system]$ systemctl start vncserver@:0 ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to manage system services or units. Authenticating as: andrei Password: ==== AUTHENTICATION COMPLETE === [andrei@localhost system]$ systemctl status vncserver@:0 vncserver@:0.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2024-03-28 16:55:56 EET; 11s ago Process: 8426 ExecStart=/usr/bin/vncserver_wrapper andrei %i (code=exited, status=2) Process: 8424 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 8426 (code=exited, status=2) Mar 28 11:54:55 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 28 11:54:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[8426]: Warning: localhost.localdomain:0 is taken because of /tmp/.X0-lock Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[8426]: Remove this file if there is no X server localhost.localdomain:0 Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[8426]: A VNC server is already running as :0 Mar 28 11:54:55 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[8426]: FATAL: 'runuser -l andrei' failed! Mar 28 11:54:55 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Mar 28 11:54:55 localhost.localdomain systemd[1]: vncserver@:0.service failed.

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

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

rm /tmp/.X0-lock
systemctl start vncserver@:0
systemctl status vncserver@:0

vncserver@:0.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2024-03-28 00:01:00 EET; 13s ago Process: 9358 ExecStart=/usr/bin/vncserver_wrapper andrei %i (code=exited, status=2) Process: 9356 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 9358 (code=exited, status=2) Mar 28 11:54:55 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 28 11:54:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9358]: Warning: localhost.localdomain:0 is taken because of /tmp/.X11-unix/X0 Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9358]: Remove this file if there is no X server localhost.localdomain:0 Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9358]: A VNC server is already running as :0 Mar 28 11:54:55 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9358]: FATAL: 'runuser -l andrei' failed! Mar 28 11:54:55 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Mar 28 11:54:55 localhost.localdomain systemd[1]: vncserver@:0.service failed.

Теперь нужно удалить файл .X11-unix/X0k нужно удалить

rm /tmp/.X11-unix/X0k
systemctl daemon-reload
systemctl start vncserver@:0
systemctl status vncserver@:0

vncserver@:0.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:0.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2024-03-28 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 Mar 28 11:54:55 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 28 11:54:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9516]: WARNING: The first attempt to start Xvnc failed, possibly because the font Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9516]: catalog is not properly configured. Attempting to determine an appropriate Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[9516]: font path for this system and restart Xvnc using that font path ...

Изменить пароль

Для смены пароля выполните

vncpasswd

Дисплей 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) Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[4260]: (EE) Cannot establish Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransSocketUNIX Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransMakeAllCOT Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[4260]: (EE) Mar 28 11:54:55 localhost.localdomain vncserver_wrapper[4260]: Fatal server error:

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

Если запущена - закройте иксы

Скрипты для быстрой установки

Если вам нужно часто устанавливать VNC на разные хосты - воспользуйтесь make или простым bash скриптом

GNUmakefile

# USERNAME замените на свой USERNAME=ndr .PHONY: install-vnc install-vnc: @sudo yum -y update @sudo yum -y install epel-release @sudo yum -y install tigervnc-server @vncpasswd @sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service @sudo sed -i 's/wrapper\ <USER>/wrapper\ $(USERNAME)/' /etc/systemd/system/vncserver@\:1.service @systemctl enable vncserver@:1 @systemctl daemon-reload @sudo systemctl start vncserver@:1

Bash скрипт

#!/bin/bash USERNAME=andrei sudo yum -y update sudo yum -y install epel-release sudo yum -y install tigervnc-server vncpasswd sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service sudo sed -i "s/wrapper\ <USER>/wrapper\ $USERNAME/" /etc/systemd/system/vncserver@\:1.service sudo systemctl enable vncserver@:1 sudo systemctl daemon-reload sudo systemctl start vncserver@:1

Кавычки в sed команде должны быть двойными. Иначе переменная USERNAME будет воспринята как просто текст.

Похожие статьи
CentOS
Установка CentOS
Настройка после установки
Настройка и мониторинг сети: firewall, ifop, tc, nethogs…
Настройка даты и времени
X Window System CentOS
XRDP: Удалённый рабочий стол
VNC: Удалённый рабочий стол
Изменить machine-id
Изменить ulimit
xclip: работа с буфером обмена
docker-ce: установка в CentOS 8
Пользователи
Безопасный режим
Железо: CPU, RAM
FAQ
Разбор ошибок
Установка виртуальной CentOS на Ubuntu
Docker контейнер CentOS с SSH доступом
Файлы
Объединить .pdf файлы
diff: сравнение файлов
find: поиск файлов
kill: завершить процесс
make
signal: системные сигналы
env: переменные окружения
localectl: язык
systemctl: Список активных сервисов
SCP: обмен файлами;
SSH: удалённый доступ
cron: задания по расписанию
sudo

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: