Установка vnc4server на Ubuntu Server 18.04 LTS

24.01.2020

Теги: CLILinuxSSHSystemdКонфигурацияНастройкаСерверУстановка

По умолчанию серверы Ubuntu 18.04 поставляются без предустановленного графического окружения рабочего стола и сервера VNC. Потому сначала нужно установить эти компоненты. Мы будем использовать пакеты xfce4 и vnc4server, доступные в официальном репозитории Ubuntu.

Установка xfce и vnc4server

Сначала устанавливаем пакет xfce4:

$ sudo apt update
$ sudo apt install xfce4 xfce4-goodies

Следом за ним — пакет vnc4server:

$ sudo apt install vnc4server

Настройка VNC-сервера

Устанавливаем пароль для доступа к VNC-серверу:

$ vncpasswd
Password: пароль
Verify: пароль

Пароль будет сохранен в файл ~/.vnc/passwd. Теперь создадим файл ~/.vnc/xstartup файл для запуска рабочего стола xfce4:

$ nano ~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Этот файл нужно сделать исполняемым:

$ chmod +x ~/.vnc/xstartup

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

Теперь можно запустить VNC-сервер:

$ vncserver
New 'vnc-server:1 (evgeniy)' desktop is vnc-server:1

Starting applications specified in /home/evgeniy/.vnc/xstartup
Log file is /home/evgeniy/.vnc/vnc-server:1.log

Сервер прослушивает порт 5901 (или :1), при запуске еще одного экземпляра сервера — он будет прослушивать порт 5902 (или :2). Посмотреть список серверов, которые запущены в данный момент:

$ ps -ef | grep vnc | awk '{print substr($0, 0, 120)}'
evgeniy  29181     1  0 10:29 tty1     00:00:00 Xvnc4 :1 -desktop vnc4server:1 (evgeniy) -auth /home/evgeniy/.Xauthority
evgeniy  29309     1  0 10:30 tty1     00:00:00 Xvnc4 :2 -desktop vnc4server:2 (evgeniy) -auth /home/evgeniy/.Xauthority
evgeniy  29435   976  0 10:31 tty1     00:00:00 grep --color=auto vnc

Остановить сервер можно командой:

$ vncserver -kill :1

Можно запускать сервер с параметрами:

$ vncserver -depth 24 -geometry 1200x800 :1

Подключение VNC-серверу

На другой машине запускаем VNC-клиент Remmina и подключаемся к серверу:

Перед подключением надо открыть пару портов на той машине, где установлен VNC-сервер, чтобы фаервол не блокировал подключение:

$ sudo ufw allow 5901:5902/tcp

Запуск при загрузке

Теперь нужно настроить сервер VNC как сервис Systemd, чтобы он запускался при загрузке системы. Для этого создаем новый unit-файл:

$ sudo nano /etc/systemd/system/vncserver@.service

Символ @ в конце имени файла позволит нам передать аргумент, который можно использовать в конфигурации сервиса. С его помощью можно указать порт VNC, который нужно использовать при управлении сервисом.

[Unit]
Description=Start vnc4server at startup
After=syslog.target network.target

[Service]
Type=forking
User=evgeniy
Group=evgeniy
WorkingDirectory=/home/evgeniy
PIDFile=/home/evgeniy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i &> /dev/null
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1200x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Команда ExecStartPre останавливает VNC, если сервис уже запущен. Команда ExecStart запускает VNC-сервер, а команда ExecStop — останавливает. Давайте сообщим системе про новый unit-файл:

$ sudo systemctl daemon-reload

Добавляем две службы в автозагрузку:

$ sudo systemctl enable vncserver@1.service
$ sudo systemctl enable vncserver@2.service

Теперь, после загрузки системы, VNC-сервер будет прослушивать порты 5901 и 5902. И мы можем подключиться на любом из них.

Безопасное подключение

При подключении VNC не использует безопасные протоколы. Давайте на машине с VNC-сервером установим SSH-сервер:

$ sudo apt install openssh-server

И откроем 22-ой порт:

$ sudo ufw allow OpenSSH

После чего создадим ssh-туннель от клиента к серверу. Для этого на клиенте выполняем команду:

$ ssh -L 5901:127.0.0.1:5901 evgeniy@192.168.110.17
evgeniy@192.168.110.17's password: пароль
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-72-generic x86_64)

Теперь на клиенте при подключении к VNC-серверу указываем не 192.168.110.17:5901, а localhost:5901. Мы как бы подключаемся к локальной машине, но соединение будет проброшено через ssh-туннель на машину с VNC-сервером.

Держать открытыми порты 5901 и 5902 больше не нужно, так что закрываем:

$ sudo ufw delete allow 5901:5902/tcp

Устанавливаем браузер

При подключении у нас есть рабочий стол, файловый менеджер, терминал. Но не хватает браузера, так что давайте установим:

$ sudo apt install firefox
$ sudo apt install firefox-locale-ru

Поиск: CLI • Linux • SSH • Systemd • Конфигурация • Настройка • Сервер • Установка • VNC • Клиент

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.