Tutorial

Установка и настройка VNC на сервере Debian 9

Published on January 7, 2020
Русский
Установка и настройка VNC на сервере Debian 9

Введение

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

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

Предварительные требования

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

  • Один сервер 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.

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

  1. sudo apt update

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

  1. sudo apt install xfce4 xfce4-goodies

Во время установки вам будет предложено выбрать раскладку клавиатуры из списка возможных вариантов. Выберите наиболее подходящий для вашего языка вариант и нажмите ENTER. После этого установка будет продолжена.

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

  1. sudo apt install tightvncserver

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

  1. vncserver

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

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

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

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

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

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

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

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

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

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

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

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

  1. vncserver -kill :1

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

Output
Killing Xtightvnc process ID 17648

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

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

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

  1. nano ~/.vnc/xstartup

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

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

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

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

  1. sudo chmod +x ~/.vnc/xstartup

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

  1. vncserver

Результат будет выглядеть примерно так:

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

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

Шаг 3 — Безопасная настройка рабочего стола VNC

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

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

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

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

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

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

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

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

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

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

Файлы через соединение VNC с Debian 9

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

Теперь мы настроим сервер VNC как службу.

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

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

Создайте новый файл блока с именем /etc/systemd/system/vncserver@.service в своем любимом текстовом редакторе:

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

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

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

/etc/systemd/system/vncserver@.service
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=sammy Group=sammy WorkingDirectory=/home/sammy PIDFile=/home/sammy/.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 запускает VNC и устанавливает 24-битную глубину цвета с разрешением 1280x800. Вы можете изменить эти параметры запуска в соответствии со своими потребностями.

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

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

  1. sudo systemctl daemon-reload

Активируйте файл блока.

  1. sudo systemctl enable vncserver@1.service

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

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

  1. vncserver -kill :1

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

  1. sudo systemctl start vncserver@1

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

  1. sudo systemctl status vncserver@1

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

Output
● 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) ...

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

Запустите туннель SSH еще раз:

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

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

Заключение

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Default avatar
finid

author


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.