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

Как установить и настроить VNC в Ubuntu 18.04


Введение

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

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

Предпосылки

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

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

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

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

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

    1. sudo apt update

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

    1. sudo apt install xfce4 xfce4-goodies

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

    1. sudo apt install tightvncserver

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

    1. vncserver

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

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

    Пароль должен содержать от шести до восьми символов. Пароли длиной более 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 в вашем домашнем каталоге. Сценарий запуска был создан при запуске 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 &
    

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

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

    Чтобы убедиться, что сервер 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

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

    Шаг 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 по умолчанию. Это должно выглядеть примерно так:

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

    Нажмите 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; indirect; vendor preset: enabled) Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 22330 (Xtightvnc) ...

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

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

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

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

    Заключение

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