Введение
Virtual Network Computing (VNC) — это графическая система совместного использования рабочего стола, которая позволяет использовать клавиатуру и мышь для удаленного управления другим компьютером. Это альтернатива протоколу удаленного рабочего стола Microsoft (RDP) с открытым исходным кодом.
В этом руководстве описаны шаги, необходимые для установки и настройки сервера VNC в Ubuntu 20.04 LTS Focal Fossa. Мы также покажем вам, как безопасно подключиться к серверу VNC через туннель SSH.
Предпосылки
Прежде чем продолжить обучение, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.
Если вы хотите установить VNC на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установите среду рабочего стола
На большинстве серверов не установлена среда рабочего стола, поэтому мы начнем с установки упрощенной среды рабочего стола.
В репозиториях Ubuntu доступно несколько сред рабочего стола (DE). Мы установим Xfce. Это быстрая, стабильная и легкая среда рабочего стола, что делает ее идеальной для использования на удаленном сервере.
Введите следующие команды для установки Xfce на сервер:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
В зависимости от вашей системы загрузка и установка пакетов Xfce может занять некоторое время.
Установите VNC-сервер
В репозиториях Ubuntu также доступно несколько серверов VNC, таких как TightVNC, TigerVNC и x11vnc. Каждый сервер VNC имеет свои сильные и слабые стороны с точки зрения скорости и безопасности.
Мы установим TigerVNC. Это активно поддерживаемый высокопроизводительный сервер VNC.
Введите следующую команду, чтобы установить TigerVNC на ваш сервер Ubuntu:
sudo apt install tigervnc-standalone-server tigervnc-common
Теперь, когда сервер VNC установлен, следующим шагом будет создание начальной конфигурации и установка пароля. Не используйте sudo при запуске команды vncserver
:
vncserver
Вам будет предложено ввести и подтвердить свой пароль, а также указать, следует ли установить его как пароль только для просмотра. Если вы решите установить пароль только для просмотра, пользователь не сможет взаимодействовать с экземпляром VNC с помощью мыши и клавиатуры.
Пароль должен состоять из шести-восьми символов. Пароли, содержащие более 8 символов, будут автоматически усечены.
После подтверждения пароля у вас будет возможность создать пароль только для просмотра. Пользователи, которые входят в систему с паролем только для просмотра, не смогут управлять экземпляром VNC с помощью мыши или клавиатуры. Это полезная опция, если вы хотите что-то продемонстрировать другим людям, использующим ваш VNC-сервер, но это не обязательно.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/noviello/.Xauthority does not exist
New 'server2.noviello.it:1 (noviello)' desktop at:1 on machine server2.noviello.it
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/noviello/.vnc/server2.noviello.it:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/noviello/.vnc/passwd:1 to connect to the VNC server.
Обратите внимание, что если вы хотите изменить свой пароль или добавить пароль только для просмотра, вы можете сделать это с помощью команды vncpasswd
:
vncpasswd
На данный момент VNC-сервер установлен и работает. Теперь давайте настроим его для запуска Xfce и предоставления нам доступа к серверу через графический интерфейс.
При первом запуске команды vncserver
создается и сохраняется файл паролей ~/.vnc
. Этот каталог будет создан, если его нет.
Параметр :1
после имени хоста в выходных данных выше указывает номер порта дисплея, на котором работает сервер vnc. В нашем случае сервер работает на TCP-порту 5901
(5900+1). Если вы создадите второй экземпляр с помощью vncserver
, он будет работать на следующем свободном порту :2
, то есть сервер будет работать на порту 5902
(5900 + 2).
Важно помнить, что при работе с серверами VNC: :X
— это порт дисплея, на который ссылается 5900+X
Прежде чем перейти к следующему шагу, остановите экземпляр VNC с помощью команды vncserver
с параметром -kill
и номером сервера в качестве аргумента. В этом примере сервер работает на порту 5901 ( :1
), поэтому мы остановим его с помощью:
vncserver -kill:1
Killing Xtigervnc process ID 6458... success!
Настроить VNC-сервер
Теперь, когда на сервере установлены и Xfce, и TigerVNC, нам нужно настроить TigerVNC для использования Xfce. Для этого создайте следующий файл:
nano ~/.vnc/xstartup
Вставьте следующие строки кода
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Сохраните и закройте файл. Приведенные выше команды будут выполняться автоматически при каждом запуске или перезапуске сервера TigerVNC.
~/.vnc/xstartup
также должен иметь права на выполнение. Выполните следующую команду chmod
, чтобы убедиться, что разрешения указаны правильно:
chmod u+x ~/.vnc/xstartup
Если вам нужно ввести дополнительные параметры для сервера VNC, создайте файл с именем config
и добавьте по одному параметру в строку. Вот пример:
geometry=1920x1084
dpi=96
Затем перезапустите VNC-сервер:
vncserver -localhost
Создайте файл диска Systemd
Настроив сервер VNC для работы в качестве службы systemd, вы можете запускать, останавливать и перезапускать его по мере необходимости, как и любую другую службу. Вы также можете использовать команды администрирования systemd, чтобы убедиться, что VNC запускается при запуске сервера.
Сначала создайте новый файл диска с именем /etc/systemd/system/[email protected]
:
sudo nano /etc/systemd/system/[email protected]
Символ @
в конце имени позволит нам передать аргумент, который можно использовать в конфигурации службы. Вы будете использовать это, чтобы указать порт отображения VNC, который вы хотите использовать при управлении службой.
Добавьте в файл следующие строки. Убедитесь, что вы изменили значение User, Group, WorkingDirectory и имя пользователя в значении PIDFILE, чтобы оно соответствовало вашему имени пользователя:
Команда ExecStartPre
останавливает VNC, если он уже запущен. Команда ExecStart
запускает VNC и устанавливает глубину цвета на 24-битный цвет с разрешением 1280x800. Вы также можете изменить эти параметры запуска в соответствии с вашими потребностями. Также обратите внимание, что команда ExecStart
снова включает параметр -localhost
.
Сохраните и закройте файл.
Затем сообщите системе о новом файле диска:
sudo systemctl daemon-reload
Включить файл диска:
sudo systemctl enable [email protected]
1
, за которой следует символ @
, указывает отображаемый номер, на котором должна появиться услуга, в этом случае значение по умолчанию :1
.
Остановите текущий экземпляр сервера VNC, если он все еще работает:
vncserver -kill:1
Затем запустите его, как и любой другой сервис systemd:
sudo systemctl start vncserver@1
Вы можете убедиться, что он запустился с помощью этой команды:
sudo systemctl status vncserver@1
Если он запустился успешно, вывод должен выглядеть так:
● [email protected] - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Tue 2020-02-11 21:57:43 CET; 4s ago
Process: 6629 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill:1 > /dev/null 2>&1 ||: (code=exited, status=0/SUCCESS)
Main PID: 6657 (vncserver)
Tasks: 0 (limit: 2298)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 6657 /usr/bin/perl /usr/bin/vncserver:1 -geometry 1440x900 -alwaysshared -fg
Теперь ваш сервер VNC готов к использованию при каждом запуске сервера, и вы можете управлять им с помощью команд systemctl
, как и любой другой службой systemd.
Подключиться к VNC-серверу
Сам VNC не использует безопасные протоколы при подключении. Чтобы безопасно подключиться к вашему серверу, вы создадите туннель SSH, а затем скажете своему VNC-клиенту подключаться с использованием этого туннеля, а не устанавливать прямое соединение.
Создайте SSH-соединение на локальном компьютере, которое безопасно перенаправляется на соединение для VNC localhost
. Вы можете сделать это через терминал в Linux или macOS с помощью следующей команды ssh
:
ssh -L 59000:localhost:5901 -C -N -l noviello your_server_ip
Вот что означают параметры этой команды ssh
:
-L 59000:localhost:5901
: Переключатель-L
указывает, что порт, указанный на локальном компьютере (59000
), должен быть переадресован на хост, а порт указан на целевом сервере (localhost:5901
указывает порт5901
на целевом сервере, определенный какyour_server_ip
). Обратите внимание, что указанный локальный порт несколько произволен; если порт еще не связан с другой службой, его можно использовать в качестве порта пересылки для туннеля.-C
: этот флаг разрешает сжатие, что может помочь минимизировать потребление ресурсов.-N
: эта опция сообщаетssh
, что вы не хотите запускать какие-либо удаленные команды. Этот параметр полезен, когда вы просто хотите перенаправить порты.-l noviello your_server_ip
: Переключатель-l
позволяет вам указать пользователя, под которым вы хотите войти после подключения к серверу. Обязательно заменитеnoviello
иyour_server_ip
на имя пользователя без полномочий root и IP-адрес вашего сервера.
Примечание59015900022
первоначальной настройке сервера для Ubuntu 20.04Как настроить брандмауэр UFW в Ubuntu 20.04 LTS
5901
Если вы используете PuTTY для подключения к своему серверу, вы можете создать туннель SSH, щелкнув правой кнопкой мыши верхнюю панель окна терминала, а затем выбрав опцию «Изменить настройки… ».
Найдите пункт Connection в древовидном меню в левой части окна перенастройки PuTTY. Разверните ветку SSH и нажмите Tunnel. На экране «Параметры управления переадресацией портов SSH » введите 59000
в качестве исходного порта и localhost:5901
в качестве пункта назначения, например:
Затем нажмите кнопку « Добавить », затем кнопку « Применить », чтобы реализовать туннель.
После запуска туннеля используйте клиент VNC для подключения к localhost:59000
. Вам будет предложено пройти аутентификацию, используя пароль, который вы установили на шаге 1.
После подключения вы увидите рабочий стол Xfce по умолчанию.
Вы можете получить доступ к файлам в вашем домашнем каталоге с помощью файлового менеджера или из командной строки.
Нажмите CTRL+C
на локальном терминале, чтобы остановить туннель SSH и вернуться к подсказке. Это также отключит сеанс VNC.
Теперь вы можете настроить свой VNC-сервер для работы в качестве службы systemd.
Вывод
К настоящему времени у вас должен быть запущен и запущен VNC-сервер, и вы можете легко управлять сервером Ubuntu 20.04 LTS Focal Fossa с локального настольного компьютера с помощью простого в использовании графического интерфейса.
Чтобы настроить сервер VNC для запуска отображения для нескольких пользователей, создайте новый файл начальной конфигурации и установите пароль с помощью команды vncserver
. Вам также потребуется создать новый служебный файл, используя другой порт.