VNC: Удалённый рабочий стол в Rocky

Содержание
Введение
Установка tigervnc-server
Подключение к VNC серверу
Запустить VNC сервер
Остановить VNC сервер
Изменить порт
Статьи про Rocky

Введение

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

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

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

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

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

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

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

Выполните

sudo yum 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 сервера

sudo systemctl daemon-reload
sudo systemctl start vncserver@:1
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 16 13:49:45 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 16 13:49:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 16 13:50:35 localhost.localdomain vncserver_wrapper[23145]: New 'localhost.localdomain:1 (andrei)' desktop is localhost.localdomain:1 Mar 16 13:50:35 localhost.localdomain vncserver_wrapper[23145]: Creating default startup script /home/andrei/.vnc/xstartup Mar 16 13:50:35 localhost.localdomain vncserver_wrapper[23145]: Creating default config /home/andrei/.vnc/config Mar 16 13:50:35 localhost.localdomain vncserver_wrapper[23145]: Starting applications specified in /home/andrei/.vnc/xstartup Mar 16 13:50:35 localhost.localdomain vncserver_wrapper[23145]: Log file is /home/andrei/.vnc/localhost.localdomain:1.log

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

systemctl enable vncserver@:1

Проверить, что 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))

Теперь порт 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

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

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

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

Остановить 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 2021-03-17 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 17 16:55:55 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 17 16:55:55 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 17 16:55:56 localhost.localdomain vncserver_wrapper[8426]: Warning: localhost.localdomain:0 is taken because of /tmp/.X0-lock Mar 17 16:55:56 localhost.localdomain vncserver_wrapper[8426]: Remove this file if there is no X server localhost.localdomain:0 Mar 17 16:55:56 localhost.localdomain vncserver_wrapper[8426]: A VNC server is already running as :0 Mar 17 16:55:56 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Mar 17 16:55:56 localhost.localdomain vncserver_wrapper[8426]: FATAL: 'runuser -l andrei' failed! Mar 17 16:55:56 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Mar 17 16:55:56 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 2021-03-17 17:14:50 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 17 17:14:50 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 17 17:14:50 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 17 17:14:50 localhost.localdomain vncserver_wrapper[9358]: Warning: localhost.localdomain:0 is taken because of /tmp/.X11-unix/X0 Mar 17 17:14:50 localhost.localdomain vncserver_wrapper[9358]: Remove this file if there is no X server localhost.localdomain:0 Mar 17 17:14:50 localhost.localdomain vncserver_wrapper[9358]: A VNC server is already running as :0 Mar 17 17:14:50 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Mar 17 17:14:50 localhost.localdomain vncserver_wrapper[9358]: FATAL: 'runuser -l andrei' failed! Mar 17 17:14:50 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Mar 17 17:14:50 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 2021-03-17 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 17 17:16:39 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Mar 17 17:16:39 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Mar 17 17:16:42 localhost.localdomain vncserver_wrapper[9516]: WARNING: The first attempt to start Xvnc failed, possibly because the font Mar 17 17:16:42 localhost.localdomain vncserver_wrapper[9516]: catalog is not properly configured. Attempting to determine an appropriate Mar 17 17:16:42 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) Mar 18 15:50:32 localhost.localdomain vncserver_wrapper[4260]: (EE) Cannot establish Mar 18 15:50:32 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransSocketUNIX Mar 18 15:50:32 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransMakeAllCOT Mar 18 15:50:32 localhost.localdomain vncserver_wrapper[4260]: (EE) Mar 18 15:50:32 localhost.localdomain vncserver_wrapper[4260]: Fatal server error:

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

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

Похожие статьи
VNC в Rocky
Rocky Linux
Настройка сети в Rocky
XRDP: Удалённый рабочий стол

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

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

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

@aofeed

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

@aofeedchat

IT

Образование

Актуально сейчас

Разное

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

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

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

@aofeed

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

@aofeedchat

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