VNC Ubuntu
Введение | |
Установка tigervnc-server | |
Запустить 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
Проверить статус 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 Jul 01 22:40:53 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Jul 01 22:40:53 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[23145]: New 'localhost.localdomain:1 (andrei)' desktop is localhost.localdomain:1 Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[23145]: Creating default startup script /home/andrei/.vnc/xstartup Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[23145]: Creating default config /home/andrei/.vnc/config Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[23145]: Starting applications specified in /home/andrei/.vnc/xstartup Jul 01 22:40:53 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

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

www.andreyolegovich.ru

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 2022-07-01 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) Jul 01 22:40:53 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Jul 01 22:40:53 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[8426]: Warning: localhost.localdomain:0 is taken because of /tmp/.X0-lock Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[8426]: Remove this file if there is no X server localhost.localdomain:0 Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[8426]: A VNC server is already running as :0 Jul 01 22:40:53 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[8426]: FATAL: 'runuser -l andrei' failed! Jul 01 22:40:53 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Jul 01 22:40:53 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 2022-07-01 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) Jul 01 22:40:53 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Jul 01 22:40:53 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9358]: Warning: localhost.localdomain:0 is taken because of /tmp/.X11-unix/X0 Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9358]: Remove this file if there is no X server localhost.localdomain:0 Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9358]: A VNC server is already running as :0 Jul 01 22:40:53 localhost.localdomain systemd[1]: vncserver@:0.service: main process exited, code=exited, status=2/INVALIDARGUMENT Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9358]: FATAL: 'runuser -l andrei' failed! Jul 01 22:40:53 localhost.localdomain systemd[1]: Unit vncserver@:0.service entered failed state. Jul 01 22:40:53 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 2022-07-01 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 Jul 01 22:40:53 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Jul 01 22:40:53 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9516]: WARNING: The first attempt to start Xvnc failed, possibly because the font Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[9516]: catalog is not properly configured. Attempting to determine an appropriate Jul 01 22:40:53 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) Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[4260]: (EE) Cannot establish Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransSocketUNIX Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[4260]: _XSERVTransMakeAllCOT Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[4260]: (EE) Jul 01 22:40:53 localhost.localdomain vncserver_wrapper[4260]: Fatal server error:
Убедитесь, что у вас не запущена X Window System
обычно она занимает дисплей 0.
Если запущена - закройте иксы