Поиск по сайту:

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


Введение

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

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

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Один сервер Debian 11, настроенный в соответствии с руководством по первоначальной настройке сервера Debian 11, включая пользователя без полномочий root с доступом sudo и брандмауэром.
  • Локальный компьютер с установленным клиентом VNC, который поддерживает подключения VNC через туннели SSH.
    • В Windows можно использовать UltraVNC.
    • В macOS можно использовать встроенный RealVNC.
    • В Linux вы можете выбрать один из многих вариантов, включая vinagre, krdc, TightVNC.

    Когда все настроено, можно переходить к первому шагу.

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

    По умолчанию сервер Debian 11 не поставляется с графической средой рабочего стола или установленным сервером VNC, поэтому вы начнете с их установки.

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

    После подключения к вашему серверу с помощью SSH обновите список пакетов:

    1. sudo apt update

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

    1. sudo apt install xfce4 xfce4-goodies

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

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

    1. sudo apt install tightvncserver

    Затем установите зависимость dbus-x11, чтобы обеспечить правильное подключение к вашему VNC-серверу:

    1. sudo apt install dbus-x11

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

    1. vncserver

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

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

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

    После подтверждения пароля у вас есть возможность создать пароль только для просмотра. Пользователи, которые входят в систему с паролем только для просмотра, не смогут управлять экземпляром 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

    Далее настройте его для запуска Xfce и предоставления доступа к серверу через графический интерфейс.

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

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

    Эти команды находятся в файле конфигурации с именем xstartup в папке .vnc в вашем домашнем каталоге. Сценарий запуска был создан при выполнении команды 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, чтобы запустить среду рабочего стола, если она еще не запущена. Добавьте в файл следующие команды:

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

    Вот краткий обзор того, что делает каждая строка:

    • #!/bin/bash: первая строка — это шебанг. В исполняемых текстовых файлах на платформах *nix шебанг сообщает системе, какой интерпретатор передать этот файл для выполнения. В этом случае вы передаете файл интерпретатору Bash. Это позволит выполнять каждую последующую строку как команду по порядку.
    • xrdb $HOME/.Xresources: эта команда сообщает графическому интерфейсу VNC, чтобы он прочитал пользовательский файл .Xresources. .Xresources — это место, где пользователь может вносить изменения в определенные настройки графического рабочего стола, такие как цвета терминала, темы курсора и рендеринг шрифтов.
    • startxfce4 &: эта команда указывает серверу запустить Xfce. Здесь вы найдете все графическое программное обеспечение, необходимое для удобного управления вашим сервером.

    Когда вы закончите, сохраните и выйдите из редактора. Если вы используете nano, вы делаете это, нажимая CTRL+X, затем Y, затем ENTER.

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

    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

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

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

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

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

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

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

    Вот что означают параметры этой команды ssh:

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

    Если вы используете PuTTY для подключения к своему серверу, вы можете создать туннель SSH, щелкнув правой кнопкой мыши верхнюю панель окна терминала, а затем выбрав опцию «Изменить настройки…»:

    ![Щелкните правой кнопкой мыши на верхней панели, чтобы открыть параметр «Изменить настройки»](https://assets.linux-console.net/articles/vnc_2004/vnc_putty_topbar_arrow.png «Щелкните правой кнопкой мыши на верхней панели, чтобы открыть параметр настроек».)

    Найдите ветку Connection в древовидном меню в левой части окна PuTTY Reconfiguration. Разверните ветку SSH и нажмите «Туннели». На экране «Параметры управления переадресацией портов SSH» введите 5901 в качестве исходного порта и localhost:5901 в качестве адресата, как показано ниже:

    Затем нажмите кнопку «Добавить», а затем кнопку «Применить», чтобы реализовать туннель.

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

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

    Выберите Использовать конфигурацию по умолчанию, чтобы настроить рабочий стол.

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

    ![Поиск файлов через подключение VNC к Debian 11](https://assets.linux-console.net/articles/vnc_debian10/xfce-windows.png \Использование клиента VNC для поиска файлов)

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

    Далее вы настроите сервер VNC как службу.

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

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

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

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

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

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

    [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

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

    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 Fri 2022-08-19 16:21:36 UTC; 5s ago Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS) Main PID: 24482 (Xtightvnc) . . .

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

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

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

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

    Заключение

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