Как установить и настроить 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.
На вашем сервере обновите список пакетов:
- sudo apt update
Теперь установите среду рабочего стола Xfce на свой сервер:
- sudo apt install xfce4 xfce4-goodies
После завершения установки установите сервер 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)? 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
, с помощью следующей команды:- vncserver -kill :1
Вывод должен выглядеть так, хотя вы увидите другой PID:
OutputKilling Xtightvnc process ID 17648Прежде чем изменять файл
xstartup
, создайте резервную копию оригинала:- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Теперь создайте новый файл
xstartup
и откройте его в текстовом редакторе:- nano ~/.vnc/xstartup
Команды в этом файле выполняются автоматически всякий раз, когда вы запускаете или перезапускаете сервер VNC. Нам нужен VNC для запуска нашей среды рабочего стола, если она еще не запущена. Добавьте эти команды в файл:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
Первая команда в файле,
xrdb $HOME/.Xresources
, указывает платформе GUI VNC прочитать файл.Xresources
пользователя сервера..Xresources
— это место, где пользователь может вносить изменения в определенные настройки графического рабочего стола, такие как цвета терминала, темы курсора и рендеринг шрифтов. Вторая команда указывает серверу запустить Xfce, где вы найдете все графическое программное обеспечение, необходимое для удобного управления вашим сервером.Сохраните и закройте файл.
Чтобы убедиться, что сервер VNC сможет правильно использовать этот новый файл запуска, нам нужно сделать его исполняемым.
- sudo chmod +x ~/.vnc/xstartup
Теперь перезапустите сервер VNC.
- vncserver
Вы увидите вывод, похожий на этот:
OutputNew '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 с помощью следующей команды:- 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
с помощью вашего любимого текстового редактора:- 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. Вы также можете изменить эти параметры запуска в соответствии с вашими потребностями.Сохраните и закройте файл.
Затем сообщите системе о новом юнит-файле.
- sudo systemctl daemon-reload
Включите файл модуля.
- sudo systemctl enable vncserver@1.service
1
, следующий за знаком@
, указывает, над каким отображаемым номером должна отображаться служба, в данном случае:1
по умолчанию, как обсуждалось на шаге 2. …Остановите текущий экземпляр сервера VNC, если он все еще работает.
- vncserver -kill :1
Затем запустите его так же, как и любую другую службу systemd.
- sudo systemctl start vncserver@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-туннель снова:
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
Затем установите новое подключение с помощью клиентского программного обеспечения VNC к
localhost:5901
, чтобы подключиться к вашему компьютеру.Заключение
Теперь у вас есть защищенный сервер VNC, работающий на вашем сервере Ubuntu 18.04. Теперь вы сможете управлять своими файлами, программным обеспечением и настройками с помощью простого в использовании и знакомого графического интерфейса, а также сможете удаленно запускать графическое программное обеспечение, такое как веб-браузеры.