Установка и настройка VNC в Ubuntu 16.04
VNC (Virtual Network Computing) – это система удалённого доступа, которая позволяет использовать клавиатуру и мышь для взаимодействия с графическим интерфейсом рабочего стола удалённого сервера. С её помощью можно управлять файлами, программным обеспечением и настройками удалённого сервера, не обращаясь к командной строке.
Данное руководство поможет установить VNC на виртуальный выделенный сервер Ubuntu 16.04 и настроить безопасное подключение при помощи SSH-туннеля. Сервер VNC будет использовать TightVNC, быстрый и легковесный пакет удалённого управления, поддерживающий работу даже при медленном интернете.
Требования
- Настроенный сервер Ubuntu 16.04 (для этого обратитесь к руководству по начальной настройке).
- Не-root пользователь с доступом к sudo.
- Локальный компьютер с предустановленным клиентом VNC, который поддерживает VNC-соединения через SSH-туннель. Пользователи Windows могут установить TightVNC, RealVNC или UltraVNC. Пользователи Mac OS X могут обратиться к встроенному пакету Screen Sharing или использовать кроссплатформенные приложения (например, RealVNC). Пользователи Linux могут выбрать vinagre, krdc, RealVNC, TightVNC и т.п.
1: Установка среды рабочего стола и сервера VNC
По умолчанию серверы Ubuntu 16.04 поставляются без предустановленного графического окружения рабочего стола и сервера VNC. Потому сначала нужно установить эти компоненты. В данном руководстве используются пакеты Xfce и TightVNC, доступные в официальном репозитории Ubuntu.
Чтобы установить на сервер указанные пакеты, введите:
sudo apt install xfce4 xfce4-goodies tightvncserver
Чтобы завершить начальную настройку сервера VNC после его установки и выбрать надёжный пароль, используйте команду vncserver.
vncserver
Команда предложит выбрать и подтвердить пароль, а также пароль для просмотра (опционально). Пользователи, получающие доступ к VNC при помощи пароля для просмотра, не смогут управлять VNC при помощи мыши или клавиатуры. Такой пароль позволяет вам демонстрировать VNC другим пользователям в случае необходимости.
Команда vncserver завершит начальную настройку VNC и создаст конфигурационные файлы.
2: Настройка сервера VNC
Сначала нужно определить команды, которые сервер VNC будет выполнять при запуске. Эти команды должны находиться в файле xstartup в каталоге .vnc, который хранится в домашнем каталоге текущего пользователя. Сценарий запуска был создан командой vncserver, но его нужно откорректировать для взаимодействия с Xfce.
При первом запуске VNC использует порт 5901. VNC называет этот порт :1. VNC может запускать другие экземпляры на другие порты, которые будут называться :2, :3, и т.д.
Чтобы изменить настройки сервера VNC, нужно остановить экземпляр, использующий порт 5901.
vncserver -kill :1
Команда вернёт такое сообщение (PID будет отличаться):
Killing Xtightvnc process ID 17648
Создайте резервную копию файла xstartup:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Затем создайте новый файл xstartup:
nano ~/.vnc/xstartup
Вставьте в него следующие команды, которые будут выполняться автоматически при запуске сервера VNC. Сохраните и закройте файл.
~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
При помощи первой команды, xrdb $HOME/.Xresources, GUI сервера VNC читает файл .Xresources. В файле .Xresources пользователь может вносить изменения в некоторые настройки графического рабочего стола (настраивать цвета терминала, темы курсора, шрифты). Вторая команда просто запускает Xfce, в котором хранится все графическое программное обеспечение, необходимое для управления сервером.
Теперь нужно передать права на файл:
sudo chmod +x ~/.vnc/xstartup
Перезапустите VNC:
vncserver
Во время запуска сервер вернёт:
New 'X' desktop is your_server_name.com:1
Starting applications specified in /home/8host/.vnc/xstartup
Log file is /home/8host/.vnc/liniverse.com:1.log
3: Тестирование рабочего стола VNC
Теперь нужно убедиться в том, что сервер VNC настроен правильно.
Создайте SSH-подключение на локальном компьютере, перенаправляемое на localhost сервера VNC. Для этого можно использовать терминал Linux или OS X.
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Примечание: Вместо user и server_ip_address укажите имя пользователя с доступом к sudo и свой IP-адрес.
Если вы используете графический клиент SSH (например, PuTTY), используйте server_ip_address в качестве IP-адреса соединения, а затем укажите localhost:5901 в настройках туннеля SSH.
Теперь можно использовать клиент VNC для подключения к серверу. Для этого нужно пройти аутентификацию. Введите пароль, установленный в разделе 1.
После этого на экране появится стандартный рабочий стол Xfce.
Вы можете получить доступ к файлам домашнего каталога при помощи файлового менеджера или командной строки.
4: Создание файла сервиса VNC
Теперь нужно настроить сервер VNC как сервис system.
Создайте новый файл /etc/systemd/system/vncserver@.service:
sudo nano /etc/systemd/system/vncserver@.service
Скопируйте и вставьте в него следующий код:
/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=8host
PAMName=login
PIDFile=/home/8host/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Примечание: Укажите имя своего пользователя вместо 8host.
Сохраните и закройте файл.
Перезапустите демон:
sudo systemctl daemon-reload
Включите новый файл:
sudo systemctl enable vncserver@1.service
Остановите текущий экземпляр сервера VNC, если он ещё запущен:
vncserver -kill :1
Теперь попробуйте запустить его как любой другой сервис systemd:
sudo systemctl start vncserver@1
Чтобы убедиться, что сервер запущен, проверьте его состояние:
sudo systemctl status vncserver@1
Если сервер запущен, команда вернёт:
vncserver@1.service - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)
...
systemd[1]: Starting TightVNC server on Ubuntu 16.04...
systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)
systemd[1]: Started TightVNC server on Ubuntu 16.04.
Заключение
Теперь на сервере Ubuntu 16.04 установлен защищённый сервер VNC. Его помощью можно управлять файлами, программами и настройками удалённого сервера.
Tags: Ubuntu 16.04, VNC
3 комментария
Добрый день. Подскажите пожалуйста при запуске mvc командой vncserver в логах есть ошибка
xrdb: No such file or directory
xrdb: can’t open file ‘/home/user/.Xresources’
Как ее победить?
установить новый пароль:
vncpasswd
А как подключиться к уже существующей xfce-сессии с запущенными в ее автозагрузке приложениями (по примеру, как это делает TeamViewer)? В Windows именно так и подключается, а в Linux создает новую сессию.