Table of Contents
Установка и настройка VNC-сервера на Ubuntu 20.04
Вводная
Появилась задача тестирования приложений Яндекса на различный версиях Ubuntu Desktop.
В облаке развернул несколько ВМ и встала задача получить c Windows машины удаленный доступ к рабочему столу Ubuntu.
Перебрал несколько вариантов.
С разбегу xrdp не заработал, vino не понравился, как-то там было не очень хорошо с заданием разрешения экрана.
В итоге пошел по самому очевидному варианту c наибольшим количеством доки - ставить TigerVNC.
Схема решения:
- На Ubuntu заводим пользователя, рабочий стол которого будем показывать.
- На Ubuntu ставим TigerVNC сервер.
- На Windows ставим ssh и vnc клиента.
- С Windows коннектимся по ssh.
Через ssh прокидываем локальный порт с Windows на порт Ubuntu на котором работает vnc-сервер. - На Windows запускаем vnc-клиента и подключаемся к ранее прокнутому локальному порту.
Существующие проблемы:
- Не работает автоматический запуск vncserver через systemd.
С разбегу не разобрался, в данном решении сервер запускает сам пользователь. - Для работы нужна полоса 15-20Мбит\с на стандартных, авто-согласованных, настройках.
Установка сервера 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
В ZOC все стандартно, только надо настроить проброс локального порта Windows tcp/5902 на удаленный порт Ubuntu tcp/5901.
Подключаемся к Ubuntu и запускаем скрипт 1_start_restart_katya_vnc.sh.