Как установить и настроить VNC на Debian 9

Вступление

Virtual Network Computing, или VNC, - это система соединений, которая позволяет вам использовать клавиатуру и мышь для взаимодействия с графической средой рабочего стола на удаленном сервере. Это облегчает управление файлами, программным обеспечением и настройками на удаленном сервере для пользователей, которые еще не знакомы с командной строкой.

В этом руководстве вы настроите сервер VNC на сервере Debian 9 и безопасно подключитесь к нему через туннель SSH. Вы будете использовать TightVNC, быстрый и легкий пакет дистанционного управления. Этот выбор гарантирует, что наше соединение VNC будет гладким и стабильным даже на медленных интернет-соединениях.

Предпосылки

Для завершения этого урока вам понадобится:

  • Один сервер Debian 9, настроенный в соответствии с https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9, руководством по первоначальной настройке сервера Debian 9], включая пользователя без полномочий root с + sudo + доступ и брандмауэр.

  • Локальный компьютер с установленным клиентом VNC, который поддерживает соединения VNC через туннели SSH.

  • В Windows вы можете использовать TightVNC, RealVNC или UltraVNC.

  • В macOS вы можете использовать встроенную программу Screen Sharing или использовать кроссплатформенное приложение, такое как RealVNC.

  • В Linux вы можете выбрать один из множества вариантов, включая + vinagre +, + krdc +, RealVNC или TightVNC.

Шаг 1 - Установка среды рабочего стола и VNC-сервера

По умолчанию на сервере Debian 9 нет графической среды рабочего стола или установленного сервера VNC, поэтому мы начнем с его установки. В частности, мы установим пакеты для новейшей среды рабочего стола Xfce и пакет TightVNC, доступный в официальном репозитории Debian.

На вашем сервере обновите список пакетов:

sudo apt update

Теперь установите среду рабочего стола Xfce на свой сервер:

sudo apt install xfce4 xfce4-goodies

Во время установки вам будет предложено выбрать раскладку клавиатуры из списка возможных вариантов. Выберите тот, который соответствует вашему языку, и нажмите + Enter. Установка будет продолжена.

После завершения установки установите сервер TightVNC:

sudo apt install tightvncserver

Чтобы завершить первоначальную настройку сервера VNC после установки, используйте команду + vncserver, чтобы установить безопасный пароль и создать файлы начальной конфигурации:

vncserver

Вам будет предложено ввести и подтвердить пароль для удаленного доступа к вашему компьютеру:

OutputYou will require a password to access your desktops.

Password:
Verify:

Пароль должен быть длиной от шести до восьми символов. Пароли длиной более 8 символов будут усечены автоматически.

Как только вы подтвердите пароль, у вас будет возможность создать пароль только для просмотра. Пользователи, которые входят в систему с паролем только для просмотра, не смогут управлять экземпляром VNC с помощью мыши или клавиатуры. Это полезный вариант, если вы хотите продемонстрировать что-то другим людям, использующим ваш VNC-сервер, но это не обязательно.

Затем процесс создает необходимые файлы конфигурации по умолчанию и информацию о соединении для сервера:

OutputWould you like to enter a view-only password (y/n)?
xauth:  file /home//.Xauthority does not exist

New 'X' desktop is :1

Creating default startup script /home//.vnc/xstartup
Starting applications specified in /home//.vnc/xstartup
Log file is /home//.vnc/:1.log

Теперь давайте настроим сервер VNC.

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

Серверу VNC необходимо знать, какие команды выполнять при запуске. В частности, VNC должен знать, к какому графическому рабочему столу он должен подключаться.

Эти команды находятся в файле конфигурации с именем + xstartup + в папке + .vnc + в вашем домашнем каталоге. Скрипт запуска был создан, когда вы запускали + vncserver + на предыдущем шаге, но мы создадим наш собственный для запуска рабочего стола Xfce.

Когда VNC впервые настроен, он запускает экземпляр сервера по умолчанию на порту + 5901 +. Этот порт называется display port, и VNC называет его +: 1 +. VNC может запускать несколько экземпляров на других портах дисплея, таких как +: 2 +, +: 3 + и так далее.

Поскольку мы собираемся изменить настройку сервера VNC, сначала остановите экземпляр сервера VNC, работающий на порту + 5901 +, с помощью следующей команды:

vncserver -kill :1

Вывод должен выглядеть следующим образом, хотя вы увидите другой PID:

OutputKilling Xtightvnc process ID

Прежде чем изменять файл + xstartup +, сделайте резервную копию оригинала:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Теперь создайте новый файл + xstartup + и откройте его в текстовом редакторе:

nano ~/.vnc/xstartup

Команды в этом файле выполняются автоматически при каждом запуске или перезапуске сервера VNC. Нам нужен VNC, чтобы запустить среду рабочего стола, если она еще не запущена. Добавьте эти команды в файл:

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

Первая команда в этом файле, + xrdb $ HOME / .Xresources +, сообщает каркасу графического интерфейса VNC о необходимости прочитать файл пользователя "+ .Xresources " на сервере. ` .Xresources +` - это место, где пользователь может вносить изменения в определенные настройки графического рабочего стола, такие как цвета терминала, темы курсоров и рендеринг шрифтов. Вторая команда указывает серверу запустить Xfce, где вы найдете все графическое программное обеспечение, необходимое для комфортного управления вашим сервером.

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

sudo chmod +x ~/.vnc/xstartup

Теперь перезапустите сервер VNC.

vncserver

Вы увидите вывод, похожий на этот:

OutputNew 'X' desktop is :1

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

Установив конфигурацию, давайте подключимся к серверу с нашего локального компьютера.

Шаг 3 - Безопасное подключение рабочего стола VNC

Сам VNC не использует безопасные протоколы при подключении. Мы будем использовать SSH-туннель для безопасного подключения к нашему серверу, а затем скажем нашему VNC-клиенту использовать этот туннель, а не устанавливать прямое соединение.

Создайте на своем локальном компьютере SSH-соединение, которое безопасно перенаправляет на соединение + localhost + для VNC. Вы можете сделать это через терминал в Linux или macOS с помощью следующей команды:

ssh -L :127.0.0.1: -C -N -l

Переключатель + -L + определяет привязки портов. В этом случае мы привязываем порт + 5901 + удаленного соединения к порту + 5901 + на вашем локальном компьютере. Переключатель + -C + включает сжатие, а переключатель + -N + сообщает + ssh +, что мы не хотим выполнять удаленную команду. Переключатель + -l + указывает имя удаленного входа.

Не забудьте заменить ` и ` на не-root имя пользователя sudo и IP-адрес вашего сервера.

Если вы используете графический SSH-клиент, такой как PuTTY, используйте ++ в качестве IP-адреса подключения и установите + localhost: 5901 + в качестве нового перенаправленного порта в настройках туннеля SSH программы.

После запуска туннеля используйте клиент VNC для соединения с + localhost: 5901 +. Вам будет предложено пройти аутентификацию, используя пароль, который вы установили на шаге 1.

После подключения вы увидите рабочий стол Xfce по умолчанию.

image: https: //assets.digitalocean.com/articles/vnc_debian9/qOf5NgG.png [VNC-соединение с сервером Debian 9] Выберите * Использовать конфигурацию по умолчанию * для быстрой настройки рабочего стола.

Вы можете получить доступ к файлам в вашем домашнем каталоге с помощью файлового менеджера или из командной строки, как показано здесь:

image: https: //assets.digitalocean.com/articles/vnc_debian9/j6HsSCr.png [Файлы через VNC-соединение с Debian 9]

На локальном компьютере нажмите + CTRL + C + в своем терминале, чтобы остановить туннель SSH и вернуться к вашему приглашению. Это также отключит вашу сессию VNC.

Теперь давайте настроим VNC-сервер как сервис.

Шаг 4 - Запуск VNC как системной службы

Затем мы настроим VNC-сервер в качестве службы systemd, чтобы мы могли запускать, останавливать и перезапускать его по мере необходимости, как и любую другую службу. Это также обеспечит запуск VNC при перезагрузке сервера.

Сначала создайте новый файл модуля с именем + / etc / systemd / system / vncserver @ .service +, используя ваш любимый текстовый редактор:

sudo nano /etc/systemd/system/[email protected]

Символ + @ + в конце имени позволит нам передать аргумент, который мы можем использовать в конфигурации сервиса. Мы будем использовать это для указания порта дисплея VNC, который мы хотим использовать при управлении службой.

Добавьте следующие строки в файл. Обязательно измените значение * User *, * Group *, * WorkingDirectory * и имя пользователя на значение * PIDFILE *, чтобы оно соответствовало вашему имени пользователя:

/etc/systemd/system/[email protected] [Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=
Group=
WorkingDirectory=/home/

PIDFile=/home//.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver  :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Команда + ExecStartPre + останавливает VNC, если он уже запущен. Команда + ExecStart + запускает VNC и устанавливает глубину цвета 24-битного цвета с разрешением 1280x800. Вы также можете изменить эти параметры запуска в соответствии с вашими потребностями.

Сохраните и закройте файл.

Затем сообщите системе о новом файле модуля.

sudo systemctl daemon-reload

Включить файл модуля.

sudo systemctl enable [email protected]

+ 1 + после знака + @ + обозначает, какой номер дисплея должен отображаться службой, в данном случае по умолчанию +: 1 +, как обсуждалось на шаге 2 ..

Остановите текущий экземпляр сервера VNC, если он все еще работает.

vncserver -kill :1

Затем запустите его так же, как любой другой сервис systemd.

sudo systemctl start vncserver@1

Вы можете проверить, что это началось с этой командой:

sudo systemctl status vncserver@1

Если все началось правильно, вывод должен выглядеть так:

Output● [email protected] - Start TightVNC server at startup
  Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
  Active:  (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago
 Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
 Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 4987 (Xtightvnc)

...

Ваш VNC-сервер теперь будет доступен после перезагрузки компьютера.

Запустите ваш SSH-туннель снова:

ssh -L :127.0.0.1: -C -N -l

Затем установите новое соединение с помощью программного обеспечения VNC-клиента на + localhost: 5901 +, чтобы подключиться к вашей машине.

Заключение

Теперь у вас есть защищенный VNC-сервер, работающий на вашем сервере Debian 9. Теперь вы сможете управлять своими файлами, программным обеспечением и настройками с помощью простого в использовании и знакомого графического интерфейса, а также сможете удаленно запускать графическое программное обеспечение, такое как веб-браузеры.

Related