VNC Введение:
VNC (Virtual Network Console), превосходное программное обеспечение для инструментов удаленного управления, основанное на операционных системах UNIX и Linux, разработанное известной европейской исследовательской лабораторией AT & T. Возможность удаленного управления является мощной, эффективной и практичной, и Бесплатный и открытый исходный код.
VNC в основном состоит из двух частей: однаКлиентское приложение (vncviewer)Другая частьСерверное приложение (vncserver)。
Любой компьютер с установленным клиентским приложением (vncviewer) можно легко подключить к компьютеру с установленным серверным приложением (vncserver).
Step One — Install Desktop Environment and VNC Server
By default, most Linux server installations will not come with a graphical desktop environment. If this is the case, we’ll need to begin by installing one that we can work with. In this example, we will install XFCE4, which is very lightweight while still being familiar to most users.
We can get the XFCE packages, along with the package for TightVNC, directly from Ubuntu’s software repositories using :
To complete the VNC server’s initial configuration, use the command to set up a secure password:
(After you set up your access password, you will be asked if you would like to enter a view-only password. Users who log in with the view-only password will not be able to control the VNC instance with their mouse or keyboard. This is a helpful option if you want to demonstrate something to other people using your VNC server.)
completes the installation of VNC by creating default configuration files and connection information for our server to use. With these packages installed, you are ready to configure your VNC server and graphical desktop.
Шаг 1 — Установка среды рабочего стола и сервера VNC
По умолчанию сервер Ubuntu 20.04 поставляется без графической среды рабочего стола и без сервера VNC, так что для начала вам нужно их установить.
У вас существует много вариантов при выборе сервера VNC и среды рабочего стола. В этом обучающем модуле мы установим пакеты новейшей среды рабочего стола Xfce и пакет TightVNC, доступный в официальном репозитории Ubuntu. И Xfce, и TightVNC известны как легкие и быстрые системы. Благодаря этому наше соединение VNC будет стабильным и удобным даже при низкой скорости подключения к Интернету.
После подключения к вашему серверу с помощью SSH обновите список пакетов:
Теперь установите Xfce вместе с пакетом , который содержит несколько дополнительных возможностей для среды рабочего стола:
Во время установки вам может быть предложено выбрать диспетчер отображения для Xfce по умолчанию. Диспетчер отображения — это программа, которая позволяет выбрать и выполнить вход в среду рабочего стола через графический интерфейс. Вы будете использовать Xfce только при подключении к клиенту VNC, и во время этих сеансов Xfce вы уже будете в системе как пользователь Ubuntu без прав root. Поэтому для данного обучающего модуля выбор диспетчера отображения не является принципиальным. Выберите любой и нажмите .
После завершения установки установите сервер TightVNC:
Далее задайте команду для установки пароля доступа к VNC, создайте файлы начальной конфигурации и запустите экземпляр сервера VNC:
Вам будет предложено ввести и подтвердить пароль для удаленного доступа к системе:
Пароль должен иметь длину от 6 до 8 символов. Пароли длиной более 8 символов будут автоматически обрезаны.
После подтверждения пароля вы сможете создать пароль только для просмотра. Пользователи, входящие с паролем только для просмотра, не смогут контролировать экземпляр сервера VNC с помощью мыши или клавиатуры. Это полезная возможность, если вам нужно что-то продемонстрировать с помощью сервера VNC, однако использовать ее необязательно.
Затем процесс создает необходимые файлы конфигурации по умолчанию и данные подключения для сервера. Дополнительно он запускает экземпляр сервера по умолчанию на порту . Этот порт называется портом дисплея и учитывается VNC как . VNC может запускать несколько экземпляров на других портах дисплея, при этом порт учитывается как , порт как и т. д.:
Обратите внимание, если вы захотите изменить пароль или добавить пароль только для просмотра, вы можете сделать это с помощью команды :
На этом этапе сервер VNC уже установлен и работает. Давайте настроим его для запуска Xfce и дадим доступ к серверу через графический интерфейс.
Шаг 2 — Настройка сервера VNC
Сервер VNC должен знать, какие команды следует выполнять при запуске. В частности, VNC должен знать, к какому графическому рабочему столу следует подключиться.
Эти команды находятся в файле конфигурации в папке в каталоге home. Сценарий startup был создан при запуске на предыдущем шаге, однако мы создадим собственный сценарий для запуска рабочего стола Xfce.
При начальной настройке VNC запускается экземпляр сервера по умолчанию на порту . Этот порт называется портом дисплея и учитывается VNC как . Возможен запуск нескольких экземпляров VNC на других портах дисплея, в том числе , и т. д.
Поскольку мы изменяем настройку сервера VNC, вначале нужно остановить экземпляр сервера VNC, работающий на порту , с помощью следующей команды:
Результат должен выглядеть следующим образом, хотя вы увидите другой PID:
Прежде чем изменять файл , следует создать резервную копию исходного файла:
Создайте новый файл и откройте его в текстовом редакторе:
Команды из этого файла автоматически выполняются при запуске или перезапуске сервера VNC. Сервер VNC должен запустить нашу среду рабочего стола, если она еще не запущена. Добавьте в файл следующие команды:
Первая команда в файле, указывает системе графического интерфейса VNC прочитать файл пользователя сервера . В файле пользователь может изменять определенные параметры графического рабочего стола, такие как цвета терминала, темы курсора и рендеринг шрифтов. Вторая команда указывает серверу запустить пакет Xfce, включающий все графическое программное обеспечение для удобного управления сервером.
Чтобы сервер VNC мог использовать новый файл startup, нужно сделать его исполняемым.
Перезапустите сервер VNC.
Результат будет выглядеть примерно так:
Завершив настройку, подключимся к серверу с локального компьютера.
3: Безопасное подключение к VNC
При подключении VNC не использует безопасные протоколы. Создайте SSH-туннель для безопасного подключения к серверу, а затем настройте клиент VNC для поддержки туннеля вместо прямого подключения.
На локальном компьютере создайте соединение SSH, которое перейдет в localhost соединение для VNC. Вы можете сделать это в Linux или macOS через терминал с помощью следующей команды:
Локальным портом может быть любой порт, который еще не занят другой программой или процессом, хотя в этом примере мы используем 59000. Обязательно замените 8host именем вашего пользователя Ubuntu и your_server_ip IP-адресом вашего сервера.
Если вы работаете через графический SSH-клиент, например, PuTTY, вы можете создать туннель, кликнув правой кнопкой мыши по верхней панели терминала и выбрав Change Settings…
Найдите ветку Connection в меню в левой части окна Reconfiguration. Разверните ветку SSH и нажмите Tunnels. На экране Options controlling SSH port forwarding укажите 59000 в качестве Source Port и localhost:5901 в качестве Destination.
Затем нажмите кнопку Add, а после этого нажмите Apply, чтобы создать туннель.
После запуска туннеля используйте клиент VNC для подключения к localhost:59000. Вам будет предложено пройти аутентификацию с помощью пароля, который вы установили в разделе 1.
Как только вы подключитесь, вы увидите стандартный рабочий стол Xfce. Вы можете получить доступ к файлам в вашем домашнем каталоге с помощью файлового менеджера или из командной строки.
Нажмите CTRL+C в локальном терминале, чтобы остановить туннель SSH и вернуться в обычную командную строку. Эта комбинация клавиш также завершит сессию VNC.
3: Создание файла сервиса VNC
Чтобы с легкостью контролировать новый сервер VNC, нужно настроить его как сервис Ubuntu. Это позволит запускать, останавливать и перезапускать VNC-сервер по мере необходимости.
Для начала откройте новый файл сервиса в /etc/init.d с помощью nano:
Первый блок данных необходим для объявления некоторых общих настроек VNC (например, имени пользователя и разрешения дисплея).
Не забудьте заменить слово user именем пользователя с расширенными привилегиями (не root), также можно изменить разрешение дисплея (замените значение 1024×768).
Затем нужно задать команды для управления новым сервисом. Следующий блок кода включает команду, необходимую для запуска сервера VNC, и ее обратную связь (ключевое слово команды start).
Следующий блок создает ключевое слово команды stop, которое позволяет остановить VNC-сервер.
Заключительный блок кода создает ключевое слово команды restart, которая, по сути, является комбинацией двух предыдущих команд:
Внеся все эти блоки в скрипт сервиса, сохраните и закройте файл. Сделайте этот скрипт сервиса исполняемым, чтобы иметь возможность использовать только что созданные команды.
Теперь попробуйте использовать сервис, выполнив команду запуска start:
Step 4 — Running VNC as a System Service
By setting up the VNC server to run as a systemd service you can start, stop, and restart it as needed, like any other service. You can also use systemd’s management commands to ensure that VNC starts when your server boots up.
First, create a new unit file called :
The symbol at the end of the name will let us pass in an argument you can use in the service configuration. You’ll use this to specify the VNC display port you want to use when you manage the service.
Add the following lines to the file. Be sure to change the value of User, Group, WorkingDirectory, and the username in the value of PIDFILE to match your username:
/etc/systemd/system/[email protected]
The command stops VNC if it’s already running. The command starts VNC and sets the color depth to 24-bit color with a resolution of 1280×800. You can modify these startup options as well to meet your needs. Also, note that the command again includes the option.
Save and close the file.
Next, make the system aware of the new unit file:
Enable the unit file:
The following the sign signifies which display number the service should appear over, in this case the default as was discussed in Step 2.
Stop the current instance of the VNC server if it’s still running:
Then start it as you would start any other systemd service:
You can verify that it started with this command:
If it started correctly, the output should look like this:
Your VNC server is now ready to use whenever your server boots up, and you can manage it with commands like any other systemd service.
However, there won’t be any difference on the client side. To reconnect, start your SSH tunnel again:
Then make a new connection using your VNC client software to to connect to your server.
4: Подключение к рабочему столу VNC
Чтобы протестировать сервер VNC, нужно использовать клиента, который поддерживает соединения VNC через туннели SSH. При работе с Windows можно использовать TightVNC, RealVNC или UltraVNC. В системе Mac OS X можно использовать встроенную функцию Screen Sharing или кросс-платформенное приложение (например, RealVNC).
Сначала нужно создать SSH-подключение на локальном компьютере, которое будет безопасно пересылать подключения localhost на VNC-сервер. В Linux и OS X это можно сделать через терминал с помощью следующей команды:
Примечание: замените заполнители user и server_ip_address своим именем и IP.
При работе с графическим клиентом SSH (например, PuTTY) используйте server_ip_address как IP соединения и установите localhost:5901 в качестве нового пересылаемого порта в настройках SSH-туннелирования программы.
Затем можно использовать VNC Viewer для подключения к серверу VNC на localhost:5901. Не забудьте указать :5901 в конце, так как это единственный порт, по которому доступен сервер VNC.
После подключения появится стандартный рабочий стол XFCE, готовый к настройке и использованию!
Убедившись, что подключения VNC работают должным образом, внесите сервис VNC в список стандартных сервисов, чтобы он автоматически запускался при запуске сервера:
Установка и настройка VNC в Ubuntu#
Tigervnc-server — это высокоскоростная, кроссплатформенная VNC-программа, которая запускает Xvnc-сервер и начинает
параллельные сеансы Gnome или любой другой среды рабочего стола на рабочем столе VNC.
Чтобы установить TigerVNC-сервер и другие необходимые пакеты в Ubuntu, пропишите следующую команду:
Теперь запустите VNC-сервер, выполнив команду vncserver от имени обычного пользователя. После чего создастся
начальная конфигурация, хранящаяся в директории $HOME/.vnc. Также не забудьте установить пароль для входа.
Введите пароль (длиной не менее шести символов) и подтвердите его. Если потребуется, вы можете установить пароль
“только для просмотра”:
Следующим шагом мы настроим среду рабочего стола на работу с VNC-сервером.
Итак, чтобы совершить некоторые настройки, остановите VNC-сервер, используя следующую команду:
Чтобы настроить GNOME или любой другой выбранный вами рабочий стол, создайте файл с именем xstartup
в каталоге конфигурации:
Допишите следующие строки в файл. Эти команды будут автоматически выполнены, когда вы запустите или перезапустите
TigerVNC-сервер
Обратите внимание, что команды могут различаться в зависимости от установленной среды рабочего стола:
Сохраните файл и установите соответствующее разрешение для файла, чтобы он мог быть выполнен:
Теперь запустите VNC-сервер, выполнив следующую команду от имени обычного пользователя. Укажите собственные
настройки для геометрии дисплея, а также используйте флаг -localhost, чтобы разрешить соединения только с локального
хоста и по аналогии только с пользователями, прошедшими аутентификацию на сервере.
Кроме того, изначально VNC использует TCP-порт 5900+N, где N — это номер дисплея. В таком случае :1
означает, что VNC-сервер будет работать с номером порта дисплея 5901.
Чтобы вывести все сеансы VNC-сервера в вашей системе, используйте следующую команду:
После запуска VNC-сервера проверьте порт, на котором он работает, используя команду netstat:
1: Установка среды рабочего стола и сервера VNC
По умолчанию серверы Debian 10 поставляются без предустановленного графического окружения рабочего стола и сервера VNC. Сначала нужно установить эти компоненты. В этом мануале используются пакеты Xfce и TightVNC, доступные в официальном репозитории Debian.
Чтобы установить на сервер указанные пакеты, обновите индекс и введите команду:
Во время установки вам будет предложено выбрать раскладку клавиатуры из списка доступных параметров. Выберите клавиатуру вашего языка и нажмите Enter. Теперь установите TightVNC:
Чтобы завершить начальную настройку сервера VNC после его установки и выбрать надёжный пароль, используйте команду vncserver.
Команда предложит установить и подтвердить пароль:
Пароль должен быть от шести до восьми символов. Более длинные пароли будут автоматически сокращены до 8 символов.
После того как вы подтвердите пароль, у вас будет возможность создать пароль только для просмотра. Пользователи, получающие доступ к VNC при помощи пароля для просмотра, не смогут управлять VNC через мышь или клавиатуру. Такой пароль позволяет вам демонстрировать среду VNC другим пользователям в случае необходимости.
Затем начальная настройка VNC завершится и создаст конфигурационные файлы:
Установка VNC сервера
В репозиториях Ubuntu также есть несколько серверов VNC: TightVNC, TigerVNC и x11vnc. У каждого VNC сервера есть свои сильные и слабые стороны с точки зрения скорости и безопасности.
Мы будем устанавливать TigerVNC, который предоставляет высокопроизводительный VNC сервер.
Введите следующую команду для установки TigerVNC на ваш сервер Ubuntu:
Shell
sudo apt install tigervnc-standalone-server tigervnc-common
1 | sudo apt install tigervnc-standalone-server tigervnc-common |
Следующим шагом после установки сервера VNC является запуск команды . Она создаст начальную конфигурацию и попросит установит новый пароль. При выполнении следующей команды не используйте sudo:
Shell
vncserver -localhost no
1 | vncserver-localhost no |
Вам будет предложено ввести и подтвердить пароль (максимум 8 символов должен содержать пароль), а также указать, следует ли установить его в качестве пароля только для просмотра. Если вы решите установить пароль только для просмотра, пользователь не сможет работать с VNC при помощи мыши и клавиатуры.
Shell
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/vnc_user/.Xauthority does not exist
New ‘server2.linuxize.com:1 (linuxize)’ desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/vnc_user/.vnc/server2.linuxize.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vnc_user/.vnc/passwd :1 to connect to the VNC server.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
You will requireapassword toaccess your desktops. Password Verify Would you like toenteraview-only password(yn)?n usrbinxauthfilehomevnc_user.Xauthoritydoes notexist New’server2.linuxize.com:1 (linuxize)’desktop at1on machine server2.linuxize.com Starting applications specified inetcX11Xvnc-session Log fileishomevnc_user.vncserver2.linuxize.com1.log Usextigervncviewer-SecurityTypes VncAuth-passwdhomevnc_user.vncpasswd1toconnect tothe VNC server. |
Обратите внимание на после имени хоста в выводе выше. Знак указывает на номер порта дисплея, на котором запущен сервер vnc
В нашем случае сервер запущен на TCP порту (5900 + 1). Если вы создадите второй экземпляр при помощи , он будет работать на следующем свободном порту, то есть . Это означает, что сервер запущен на порту (5900 + 2).
Перед переходом к следующему шагу остановите все VNC сессии, используя команду с параметром и номером сервера в качестве аргумента. В нашем случае сервер запущен на порту 5901 (), поэтому мы остановим его следующим образом:
Shell
vncserver -kill :1
1 | vncserver-kill1 |
Shell
Killing Xtigervnc process ID 7264… success!
1 | Killing Xtigervnc process ID7264…success! |
Шаг 2 — Настройка сервера VNC
Сначала укажем команды, которые сервер VNC должен выполнять при запуске. Эти команды задаются в конфигурационном файле в поддиректории вашей домашней директории. Скрипт запуска был создан во время выполнения команды на предыдущем шаге, сейчас мы изменим некоторые команды для работы с Xfce.
При первом запуске VNC запускает инстанс сервера по умолчанию на порту 5901. Этот порт называется портом отображения (display port), и в VNC он имеет обозначение . VNC может запускать много инстансов на других портах, например, , , и так далее. При работе с серверами VNC помните, что порт отображения с номером работает на порту .
Поскольку мы собираемся внести изменения в конфигурацию сервера VNC, сначала нам необходимо остановить инстанс сервера, работающего на порту 5901.
Вывод должен выглядеть похожим образом с точностью до идентификатора процесса (process ID):
Перед внесением изменений в новый файл , сделаем резервную копию исходного файла.
Теперь создадим новый файл используя или другой текстовый редактор.
Вставьте эти команды в файл для автоматического их выполнения при запуске или перезапуске сервера VNC, затем сохраните и закройте файл.
Первая команда файла сообщает фреймворку графического интерфейса пользователя VNC, что необходимо использовать пользовательский файл . Файл сохраняет определённые пользовательские настройки рабочего стола, например, цвета терминала, тему курсора, рендеринг шрифтов. Вторая команда предписывает серверу запустить Xfce, который и позволяет вам комфортно управлять вашим сервером.
Для того, чтобы сервер VNC мог использовать эти настройки, сделаем файл исполняемым.
Теперь перезапустим сервер VNC.
Сервер должен перезапуститься и вывести нечто похожее в консоль:
1: Установка среды рабочего стола и сервера VNC
Подключившись к серверу по SSH, обновите индекс пакетов:
Чтобы установить на сервер необходимые пакеты, введите команду:
Теперь установите TightVNC:
Чтобы завершить начальную настройку сервера VNC после его установки и выбрать надёжный пароль, используйте команду vncpasswd.
Команда предложит выбрать и подтвердить пароль:
Пароль должен включать от шести до восьми символов. Более длинные пароли будут автоматически сокращены до 8 символов.
Подтвердив свой пароль, вы сможете создать пароль только для просмотра. Он нужен для демонстрации VNC другим пользователям, потому его не обязательно устанавливать.
Если вы в будущем захотите изменить свой пароль или добавить пароль для просмотра, вы можете сделать это с помощью команды vncpasswd.
Создание VNC пользователя
Для сохранения надежности и производительности нужно создать отдельную связь пользователя . Здесь можно использовать уже существующего пользователя.
Создадим пользователя при помощи следующей команды. Можете сохранить свое имя пользователя, выбор за вами. Вас попросят ввести новый пароль и указать детали пользователя. Введите новый пароль для пользователя (пароль для подключения к VNC укажите ниже, тут отдельная часть пользователя). Указание других деталей можете пропустить, нажав ENTER.
Shell
adduser vnc_user
1 | adduser vnc_user |
Установите , используя следующую команду. Пользователя потребуется добавить в группу .
Shell
apt-get install sudo
1 | apt-getinstall sudo |
Теперь добавьте пользователя в группу . Таким образом, у пользователя будет разрешение действовать от имени пользователя , а также выполнять команды .
Shell
$ gpasswd -a vnc_user sudo
Adding user vnc_user to group sudo
1 2 |
$gpasswd-avnc_user sudo Adding user vnc_user togroup sudo |
Переключитесь на пользователя vnc для дальнейших операций.
Shell
su — vnc_user
1 | su-vnc_user |
Установка TigerVNC
Теперь давайте разберемся, как мы можем установить и настроить TigerVNC в CentOS. Первое, что нужно сделать, это установить программу TigerVNC Server, открыв сеанс терминала и введя следующую команду с правами root:
Сразу после этого вам необходимо создать отдельного пользователя VNC, с которого и будет осуществляться подключение (с выделенным паролем). Для этого введите следующее:
Важно: никогда не делайте этого от имени root-пользователя — это создаст серьезную угрозу безопасности вашей системы. Лучшим решением будет оставить пользователя root без доступа к VNC и настроить выделенную учетную запись с ограниченными правами
После того как вы создали vncuser и задали пароль для входа в систему, вам также необходимо установить уникальный пароль VNC для этого пользователя. Это можно сделать с помощью следующей команды:
(первая строка может быть опущена, если мы уже вошли под пользователем vncuser заранее).
Следующее, что нужно сделать, это создать файл конфигурации VNC для vncuser. Самый быстрый способ сделать это — скопировать файл общего шаблона VNC, расположенный в папке /lib/systemd/system/, — и затем изменить его:
Цифра «1», которую мы добавили в новое имя файла, — это номер дисплея, который будет использоваться для этого конкретного экземпляра службы
Это важно знать, потому что он также определит порт TCP, который будет использоваться нашим VNC-сервером, равным 5900 + номер дисплея. Первый будет 5901, затем 5902 и так далее
Сразу после копирования вам нужно отредактировать новый файл с помощью Vi, Nano или другого текстового редактора, и заменить на имя пользователя, созданного недавно (в нашем случае vncuser). Вот как файл должен выглядеть после обновления (за исключением длинной закомментированной части в начале):
Как только вы это сделаете, можете перезагрузить демон VNC и запустить vncserver@1 с помощью следующих команд:
Прежде чем продолжить, проверьте, запущена ли служба, введя команду systemctl status:
и создайте символическую ссылку, чтобы она всегда выполнялась при запуске системы, с помощью следующей команды:
Еще одна проверка, которую вы можете выполнить, прежде чем пытаться подключиться к серверу, — это посмотреть на активные сетевые сокеты с помощью команды ss: если все работает правильно, вы должны увидеть, что VNC-сервер работает и использует порт TCP 5901. Выполните команду:
Результат должен быть следующим:
Если вы видите это, значит все настроено правильно.