Бесплатная миграция IT-инфраструктуры в облако

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

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
06 апреля 2022 г.
1992
8 минут чтения
Средний рейтинг статьи: 5

Термин Virtual Network Computing (сокращенно VNC) означает систему удаленного доступа к рабочему столу компьютера. Продукт позволяет взаимодействовать с интерфейсом, файлами на накопителе, приложениями и даже настройками операционной системы. Такая же схема администрирования используется при управлении виртуальными машинами, арендованными на мощностях провайдера timeweb.cloud.

В этом материале разберем, как создать настроенный сервер VNC на VPS/VDS с инсталлированной операционкой Debian 10 и подключение по защищенному каналу SSH. В качестве примера возьмем утилиту TightVNC. Она хорошо работает даже при соединении через низкоскоростную линию связи и обеспечивает бесперебойную передачу файлов в обе стороны (на сервер и с него на локальную машину).

Технические условия

Перед началом работ нужно подготовить сервер Debian, в облаке или локально. Помимо самой системы, желательно сразу настроить пользователя root и sudo (первый без привилегий, второй с ними). Также обязательно разрешить в брандмауэре коннект через SSH.

Еще понадобится:

  1. Машина с предустановленной Windows или macOS.
  2. Предустановленная утилита TightVNC, RealVNC, UltraVNC в первом случае или Screen Sharing во втором.

Возможно использование и любой Linux. На нее можно установить один из продуктов – vinagre, krdc, RealVNC или TightVNC.

Инсталляция сервера VNC и среды рабочего стола

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

Сначала проведем обновление перечня пакетов, уже имеющихся на хосте:

sudo apt update

Следующим шагом установим продукт Xfce:

sudo apt install xfce4 xfce4-goodies

При инсталляции система предлагает указать язык клавиатуры из предлагаемого перечня. От пользователя достаточно выбрать нужный вариант и нажать Enter, после этого процедура продолжится. По завершении можно сразу же поставить сервер TightVNC:

sudo apt install tightvncserver

По итогу требуется задать утилите первоначальные настройки VNC – пароль безопасности и сгенерировать файлы, где будут храниться конфигурационные параметры.

Vncserver

Программа предложит указать пароль с его подтверждением, который будет использоваться для коннекта с удаленной системой:

You will require a password to access your desktops.
Password:
Verify:

Необходимо внести пароль от 6 до 8 знаков, более длинные комбинации автоматом обрежутся. Параллельно с основным можно задать защиту с поддержкой режима «только просмотр». Под ним у вошедшего не получится контролировать удаленную клавиатуру и мышку, зато легко выйдет продемонстрировать работу специалиста.

После ввода обоих паролей утилита самостоятельно сгенерирует файл конфигурации:

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

New 'X' desktop is your_hostname:1

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

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

Владельцу нужно задать такие настройки, чтобы VNC Server на Debian «понимал», какие команды требуется выполнить на старте – например, указать рабочий стол, который понадобится сразу при активации соединения. Перечень таких «указаний» размещен в файле xstartup, расположенном в подкаталоге .vnc каталога home. Вариант startup создается при первоначальном старте vncserver.

Но мы внесем в конфигурацию отдельный сценарий, включающий старт интерфейса с графикой Xfce. Важно учитывать, что с заводскими настройками VNC общается с удаленными хостами через порт 5901. Его так и называют – порт дисплея, для программы он является «номером 1». Последнее позволяет запуск нескольких экземпляров под номерами 2, 3 и т.д.

Перед настройкой VNC в Debian 10 требуется остановить ее командой:

vncserver -kill :1

На экране пользователь наблюдает такой пост:

Killing Xtightvnc process ID 17648

Также желательно создать бэкап первоначального файла, чтобы быстро откатить настройки при ошибке управления:

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

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

nano ~/.vnc/xstartup

Все команды, внесенные в него, автоматически выполнятся при старте VNC вместе с системой или при рестарте самой утилиты. Внесем сначала задачу запуска среды рабочего стола:

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

Строка с наименованием Xresources – это имя сервера, на котором требуется запустить утилиту xrdb. Внутри одноименного файла можно указать цвет терминала, тему курсора, тип рендеринга шрифта и другие параметры, определяющие внешний вид и удобство пользования Рабочим столом. Вторая строка – непосредственно команда запуска программы для управления сервером.

После изменения конфигурационного файла его нужно сделать исполняемым:

sudo chmod +x ~/.vnc/xstartup

Все, настройка VNC Server завершена, остается принудительно перезапустить его.

Vncserver

На экране пользователь увидит:

New 'X' desktop is your_hostname:1
Starting applications specified in /home/username/.vnc/xstartup
Log file is /home/username/.vnc/your_hostname:1.log

Настройка рабочего стола VNC

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

Выполнить задачу можно командой в терминале (Linux или macOS):

ssh -L 5901:127.0.0.1:5901 -C -N -l user your_server_ip

Здесь опция -L обозначает наличие закрепления портов. Если не менять заводские настройки, речь идет о номерах 5901 на обоих хостах (удаленном и локальном). Опция -C позволяет сжимать данные перед их отправкой на сервер и обратно. Символ -N нужен, чтобы указать протоколу SSH, что мы не собираемся выполнять удаленные команды, а -l задает наименование хоста, к которому нужно подключаться для удаленного управления.

В приведенной команде требуется заменить слова user и server_ip на имя пользователя root без привилегий и реальный IP-адрес удаленного хоста. На рабочих местах часто устанавливают утилиту PuTTY – клиент SSH с привычным интерфейсом. В ней и указывают IP-адрес хоста, задают значение localhost:5901 в качестве нового порта для переадресации данных.

После активации соединения система предложит ввести пароль, заданный еще на первом шаге настройки. Туннель будет активирован только после успешной аутентификации входящего пользователя. И тот увидит графический интерфейс Xfce в том виде, в котором был задан в настройках .Xresources. Остается настроить Рабочий стол в меню «Использовать конфигурацию по умолчанию». Сеанс связи через SSH отключается нажатием комбинации клавиш <Ctrl+C>.

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

На завершающем этапе настроим VNC Server как системную службу Debian, чтобы запускать ее, останавливать и перезапускать по тому же принципу, что и остальные службы. Это гарантирует старт утилиты одновременно с запуском сервера. Откроем на редактирование файл настроек – /etc/system/system/vncserver@.service:

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

Здесь символ @ нужен в качестве аргумента для изменения параметров службы. Его применяют, когда нужно указать порт дисплея VNC, используемого для работы с утилитой. В файл внесем такие строки (значение user, group, workingdirectory, username требуется заменить на собственные значения):

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

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

PIDFile=/home/username/.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

Команда ExecStartPre позволяет отключить сервер VNC, если тот активен. Заново запустить его можно командой ExecStart, одновременно будет установлено разрешение 1280х800 с 24-битным цветом. Теперь нужно применить изменения и указать системе о наличии другого файла.

sudo systemctl daemon-reload

Следом активируем этот файл:

sudo systemctl enable vncserver@1.service

Цифра 1, которая указана после @, означает номер дисплея, где требуется активация службы. Он всегда «первый», если не менялись первоначальные настройки, но пользователь может указать любой другой. Теперь отключим активную копию сервера VNC и запустим какую-либо иную службу:

vncserver -kill :1
sudo systemctl start vncserver@1

Проверить, работает ли сервер VNC, можно командой:

sudo systemctl status vncserver@1

Результат владелец увидит в таком виде:

vncserver@1.service - Start TightVNC server at startup
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: 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)
...

 После проведенных манипуляций сервер станет доступным после перезапуска системы. Теперь повторно запустим канал связи через SSH:

ssh -L 5901:127.0.0.1:5901 -C -N -l username your_server_ip

Команда создаст подключение при помощи клиентского приложения, перекидывающего коннект по localhost:5901 на локальную машину.

Выводы

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

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
06 апреля 2022 г.
1992
8 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев