Table of Contents

Установка и настройка VNC-сервера на Ubuntu 20.04

Вводная

Появилась задача тестирования приложений Яндекса на различный версиях Ubuntu Desktop.
В облаке развернул несколько ВМ и встала задача получить c Windows машины удаленный доступ к рабочему столу Ubuntu.

Перебрал несколько вариантов.
С разбегу xrdp не заработал, vino не понравился, как-то там было не очень хорошо с заданием разрешения экрана.
В итоге пошел по самому очевидному варианту c наибольшим количеством доки - ставить TigerVNC.

Схема решения:

Существующие проблемы:

Установка сервера TigerVNC

Смотрим доступные пакеты.

katya@ubuntu-20-1:~$ sudo apt search tigervnc
Sorting... Done
Full Text Search... Done
tigervnc-common/focal 1.10.1+dfsg-3 amd64
  Virtual network computing; Common software needed by servers

tigervnc-scraping-server/focal 1.10.1+dfsg-3 amd64
  Virtual network computing server performing X screen scraping

tigervnc-standalone-server/focal 1.10.1+dfsg-3 amd64
  Standalone virtual network computing server

tigervnc-viewer/focal 1.10.1+dfsg-3 amd64
  Virtual network computing client for X

tigervnc-xorg-extension/focal 1.10.1+dfsg-3 amd64
  Virtual network computing X server extension

Ставим нужные.

katya@ubuntu-20-1:~$ sudo apt install tigervnc-standalone-server tigervnc-xorg-extension

Настройка сервера TigerVNC

VNC-сервер будет работать для пользователя kayta, соответственно настраивать его будем тоже от katya.

Задаем пароль для подключения к рабочему столу.

katya@ubuntu-20-1:~$ vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

katya@ubuntu-20-1:~$ ll .vnc/
total 12
drwxrwxr-x  2 katya katya 4096 мая  2 12:43 ./
drwxr-xr-x 16 katya katya 4096 мая  2 12:43 ../
-rw-------  1 katya katya    8 мая  2 12:43 passwd

Создаем скрипт запуска рабочего стола ~/.vnc/.

xstartup
#!/bin/sh
# Start Gnome 3 Desktop 
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Делаем его исполняемым.

katya@ubuntu-20-1:~$ chmod 700 ~/.vnc/xstartup

katya@ubuntu-20-1:~$ ll ~/.vnc/
total 116
drwxrwxr-x  2 katya katya  4096 мая  3 10:29 ./
drwxr-xr-x 19 katya katya  4096 мая  2 19:10 ../
-rw-------  1 katya katya     8 мая  2 12:43 passwd
-rw-rw-r--  1 katya katya 83594 мая  2 19:31 ubuntu-20-1:1.log
-rw-rw-r--  1 katya katya     5 мая  2 19:10 ubuntu-20-1:1.pid
-rw-rw-r--  1 katya katya  1819 мая  2 18:08 ubuntu-20-1:2.log
-rwxr-xr-x  1 katya katya   204 мая  3 10:29 xstartup*
-rwxr-xr-x  1 katya katya   206 мая  2 16:05 xstartup~*

Для теста запускаем vncserver и смотрим на каком порту он запустился.

katya@ubuntu-20-1:~$ vncserver -geometry 1440x900

New 'ubuntu-20-1:1 (katya)' desktop at :1 on machine ubuntu-20-1

Starting applications specified in /home/katya/.vnc/xstartup
Log file is /home/katya/.vnc/ubuntu-20-1:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/katya/.vnc/passwd :1 to connect to the VNC server.

katya@ubuntu-20-1:~$ netstat -nap | grep vnc
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      10385/Xtigervnc     
tcp6       0      0 ::1:5901                :::*                    LISTEN      10385/Xtigervnc   
...

katya@ubuntu-20-1:~$ ps aux | grep vnc
katya      10385  0.4  1.3 726636 55208 pts/1    Sl   12:48   0:00 /usr/bin/Xtigervnc :1 -desktop ubuntu-20-1:1 (katya) -auth /home/katya/.Xauthority -geometry 1440x900 -depth 24 -rfbwait 30000 -rfbauth /home/katya/.vnc/passwd -rfbport 5901 -pn -localhost -SecurityTypes VncAuth
katya      10399  0.0  0.1  10080  4592 pts/1    S    12:48   0:00 vncconfig -iconic
katya      10913  0.0  0.0  17664   732 pts/1    S+   12:49   0:00 grep --color=auto vnc

Cкрипты для управления vnc-сервером

Запуск или перезапуск vnc-сервера.

1_start_restart_katya_vnc.sh
#!/bin/bash
echo "Start vnc"
vncserver -kill :*
vncserver -geometry 1440x900
vncserver --list

Разблокировать экран.

2_fix_after_screen_lock.sh
#!/bin/bash
 
loginctl list-sessions | grep katya | awk 'system("loginctl unlock-session " $1)'

Остановить vnc-сервера.

3_stop_katya_vnc.sh
#!/bin/bash
 
echo "Stop vnc"
vncserver -kill :*
vncserver --list

Настройка ssh и vnc клиента на Windows

В TigerVNC нет шифрования, поэтому к Ubuntu будем подключаться по ssh и прокидывать локальный порт.

Скачиваем и ставим ZOC и vncviewer.

ZOC

В ZOC все стандартно, только надо настроить проброс локального порта Windows tcp/5902 на удаленный порт Ubuntu tcp/5901.

Подключаемся к Ubuntu и запускаем скрипт 1_start_restart_katya_vnc.sh.

vncviewer

Запускаем vncviewer и подключаемся по 127.0.0.1:5902

Все, должно работать.


Полезные ссылки