VNC Ubuntu

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

Введение

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

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

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

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

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

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

Установка tightvncserver

Выполните

sudo apt update

Если у вас нет X-сервера выполните

sudo apt install xfce4 xfce4-goodies
sudo apt install tightvncserver

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

vncserver

You will require a password to access your desktops. Password: Warning: password truncated to the length of 8. Verify: Would you like to enter a view-only password (y/n)? n xauth: file /home/andrei/.Xauthority does not exist New 'X' desktop is webserver:1 Creating default startup script /home/andrei/.vnc/xstartup Starting applications specified in /home/andrei/.vnc/xstartup Log file is /home/andrei/.vnc/webserver:1.log

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

Чтобы поменять пароль можно воспользоваться командой vncpasswd

Директория с настройками

ls ~/.vnc

passwd webserver:1.log webserver:1.pid xstartup

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

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

Чтобы запустить сервер на следующем свободном порту

vncserver

New 'X' desktop is webserver:2 Starting applications specified in /home/andrei/.vnc/xstartup Log file is /home/andrei/.vnc/webserver:2.log

Настройка

vncserver -kill :1

Killing Xtightvnc process ID 42727

Создайте резервную копию файла с настройками

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
vi ~/.vnc/xstartup

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

chmod +x ~/.vnc/xstartup
vncserver -localhost

New 'X' desktop is webserver:1 Starting applications specified in /home/andrei/.vnc/xstartup Log file is /home/andrei/.vnc/webserver:1.log

Запуск в качестве системного сервиса

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

[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=andrei Group=andrei WorkingDirectory=/home/andrei PIDFile=/home/andrei/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target

Замените значения полей User, Group, WorkingDirectory на нужные вам.

sudo systemctl daemon-reload

Чтобы включить дисплей порт 1

sudo systemctl enable vncserver@1.service

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

sudo systemctl status -l vncserver@1

vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2025-02-18 12:26:18 UTC; 1min ago Process: 10406 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 10420 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS) Main PID: 10428 (Xtightvnc) Tasks: 123 (limit: 1066) Memory: 195.0M CGroup: /system.slice/system-vncserver.slice/vncserver@1.service ├─10428 Xtightvnc :1 -desktop X -auth /home/andrei/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /home> ├─10434 xfce4-session ├─10445 /usr/bin/dbus-launch --sh-syntax --exit-with-session xfce4-session ├─10446 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --session ├─10450 /usr/libexec/at-spi-bus-launcher ├─10455 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3 ├─10459 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd ├─10465 /usr/libexec/at-spi2-registryd --use-gnome-session ├─10471 /usr/bin/ssh-agent -s ├─10475 xfwm4 ├─10479 /usr/libexec/gvfsd ├─10486 xfsettingsd ├─10487 xfce4-panel ├─10493 Thunar --daemon ├─10501 xfdesktop ├─10504 /usr/libexec/geoclue-2.0/demos/agent ├─10509 /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libsystray.so 6 33> ├─10513 /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libpulseaudio-plug> ├─10515 /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libxfce4powermanag> ├─10516 nm-applet ├─10517 /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libnotification-pl> ├─10518 /usr/bin/python3 /usr/share/system-config-printer/applet.py ├─10519 /usr/lib/x86_64-linux-gnu/xfce4/panel/wrapper-2.0 /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libactions.so 14 3> ├─10527 /usr/libexec/evolution-data-server/evolution-alarm-notify ├─10542 xfce4-power-manager ├─10556 /usr/lib/x86_64-linux-gnu/xfce4/notifyd/xfce4-notifyd ├─10563 /usr/libexec/dconf-service ├─10580 /usr/libexec/evolution-source-registry ├─10588 /usr/libexec/goa-daemon ├─10599 /usr/libexec/goa-identity-service ├─10606 /usr/libexec/evolution-calendar-factory ├─10620 /usr/libexec/evolution-addressbook-factory ├─10629 /usr/libexec/gvfs-udisks2-volume-monitor ├─10643 /usr/libexec/gvfs-afc-volume-monitor ├─10649 /usr/libexec/gvfs-gphoto2-volume-monitor ├─10654 /usr/libexec/gvfs-mtp-volume-monitor ├─10659 /usr/libexec/gvfs-goa-volume-monitor ├─10666 /usr/libexec/gvfsd-trash --spawner :1.7 /org/gtk/gvfs/exec_spaw/0 └─10673 /usr/libexec/gvfsd-metadata Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.gtk.vfs.AfcVolumeMonitor' Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Activating service name='org.gtk.vfs.GPhoto2VolumeMonitor' r> Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.gtk.vfs.GPhoto2VolumeMon> Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Activating service name='org.gtk.vfs.MTPVolumeMonitor' reque> Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.gtk.vfs.MTPVolumeMonitor' Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Activating service name='org.gtk.vfs.GoaVolumeMonitor' reque> Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.gtk.vfs.GoaVolumeMonitor' Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.freedesktop.thumbnails.T> Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Activating service name='org.gtk.vfs.Metadata' requested by > Feb 18 12:26:18 webserver dbus-daemon[10446]: [session uid=1000 pid=10444] Successfully activated service 'org.gtk.vfs.Metadata'

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

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

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

==== 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 2025-02-18 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) Feb 18 12:26:18 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Feb 18 12:26:18 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[8426]: Warning: localhost.localdomain:0 is taken because of /tmp/.X0-lock Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[8426]: Remove this file if there is no X server localhost.localdomain:0 Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[8426]: A VNC server is already running as :0 Feb 18 12:26:18 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[8426]: FATAL: 'runuser -l andrei' failed! Feb 18 12:26:18 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Feb 18 12:26:18 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 2025-02-18 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) Feb 18 12:26:18 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Feb 18 12:26:18 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9358]: Warning: localhost.localdomain:0 is taken because of /tmp/.X11-unix/X0 Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9358]: Remove this file if there is no X server localhost.localdomain:0 Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9358]: A VNC server is already running as :0 Feb 18 12:26:18 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9358]: FATAL: 'runuser -l andrei' failed! Feb 18 12:26:18 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Feb 18 12:26:18 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 2025-02-18 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 Feb 18 12:26:18 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Feb 18 12:26:18 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9516]: WARNING: The first attempt to start Xvnc failed, possibly because the font Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[9516]: catalog is not properly configured. Attempting to determine an appropriate Feb 18 12:26:18 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) Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[4260]: (EE) Cannot establish Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransSocketUNIX Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransMakeAllCOT Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[4260]: (EE) Feb 18 12:26:18 localhost.localdomain vncserver_wrapper[4260]: Fatal server error:

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

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