Установка и настройка vnc-сервера tightvncserver для удаленного управления системой с использованием графической среды

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

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

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

Вот что означают опции команды :

: опция указывает, что данный порт на локальном компьютере () нужно перенаправить на заданный хост и порт на сервере назначения (, т. е. порт на сервере назначения, который определяется как )

Обратите внимание, что локальный порт, который вы указываете, выбран произвольно. Поскольку порт уже не связан с другой службой, вы можете использовать его в качестве форвардного порта для вашего туннеля.

: этот флаг активирует сжатие, что минимизирует потребление ресурсов и ускоряет процессы.

: эта опция указывает , что вы не хотите выполнять какие-либо удаленные команды

Эта настройка полезна в случае, если вы планируете только перенаправлять порты.

: опция позволяет определить пользователя, который должен войти в систему после подключения к серверу. Обязательно замените и на имя вашего пользователя без прав root и IP-адрес вашего сервера.

Примечание. Эта команда создает туннель SSH для перенаправления информации с порта на вашем сервере VNC в порт на вашем локальном компьютере через порт на каждом компьютере, порт SSH по умолчанию. Если вы выполнили предварительные требования из руководства по начальной настройке сервера Ubuntu 20.04, у вас добавится правило UFW, позволяющее подключения к вашему серверу через OpenSSH.

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

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

Найдите ветку Connection​​​ в меню слева окна реконфигурации PuTTY. Раскройте ветку SSH и нажмите на Tunnels. На экране Options controlling SSH port forwarding введите ​​​ в поле Source Port​​​ и в поле Destination:

Затем нажмите кнопку Add, потом кнопку Apply для активации туннеля.

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

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

Для доступа к файлам в каталоге home вы можете использовать менеджер файлов или командную строку, как показано здесь:

Нажмите в локальном терминале, чтобы остановить туннель SSH и вернуться к командной строке. При этом сеанс VNC также будет отключен.

Теперь вы можете настроить сервер VNC как службу systemd.

Running x0vncserver to directly control the local display

As mentioned in , the tigervnc package also provides the x0vncserver binary which allows direct control over a physical X session.
After defining a session password using the vncpasswd tool, invoke the server like so:

$ x0vncserver -rfbauth ~/.vnc/passwd

For more information, see .

Note: x11vnc is an alternative more advanced VNC server which also provides direct control of the current X session.

Starting x0vncserver via xprofile

A simple way to start x0vncserver is adding a line in one of the xprofile files such as:

~/.xprofile
...
x0vncserver -rfbauth ~/.vnc/passwd &

Starting and stopping x0vncserver via systemd

In order to have a VNC Server running x0vncserver, which is the easiest way for most users to quickly have remote access to the current desktop, create a systemd unit as follows replacing the user and the options with the desired ones:

~/.config/systemd/user/x0vncserver.service
Description=Remote desktop service (VNC)


Type=simple
# wait for Xorg started by ${USER}
ExecStartPre=/bin/sh -c 'while ! pgrep -U "$USER" Xorg; do sleep 2; done'
ExecStart=/usr/bin/x0vncserver -rfbauth %h/.vnc/passwd
# or login with your username & password
#ExecStart=/usr/bin/x0vncserver -PAMService=login -PlainUsers=${USER} -SecurityTypes=TLSPlain


WantedBy=default.target

Start and enable the service in Systemd/User mode, i.e. with the parameter.

Шаг 2. Настройка VNC Server

VNC запускает свой экземпляр на 5901 порту. Это display port, vnc называет его :1 (в клиенте можно вводить вместо 5901). VNC можно запускать в несколько экземпляров на других display port, :2 или :3 и т. д.

Так как мы собираемся поменять конфигурацию VNC, остановим работающий экземпляр (после любого изменения конфигурации):

Нас интересует файл xstartup в папке .vnc, которая находится в вашей домашней директории.

Прежде чем менять xstartup, забекапим оригинал:

Добавим строки для использования оболочки GNOME:

Или добавим строчки для использования оболочки XFCE:(с GNOME на данный момент баг при логине, не проходит через аутентификацию, с XFCE всё ок)Чтобы установить XFCE — sudo apt install xfce4 и ребут

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

Вы должны увидеть такое сообщение:

Варианты доступа к весам

Для осуществления взаимодействия с весами существует несколько вариантов доступа к весам:

  1. Telnet: возможно удаленное управление весами посредством ввода команд через текстовую консоль.
  2. SSH: возможно удаленное управление весами посредством ввода команд через текстовую консоль. Возможен прием/передача файлов. Данные при обмене шифруются.
  3. SCP: возможен прием/передача файлов. Данные при обмене шифруются.
  4. FTP: возможен прием/передача файлов.
  5. SMB/CIFS: возможен прием/передача файлов.
  6. VNC: возможно удаленное управление экраном весов.
  7. HTTP: возможно удаленное управление экраном весов и отдельно настройками весов (только для весов ревизии 2).
! Удаленное управление по протоколу VNC не защищено (для весов ревизии 1). Будьте внимательны при открытии доступа из сети Internet к вашим весам. Для обеспечения безопасного соединения рекомендуется использовать VNP соединение.
! Управление по протоколу HTTP (посредством браузера) и фоновое изменение настроек поддерживается весами Aclas LS515 ревизия 2!

Визуальное удаленное управление

При доступе к экрану весов по протоколу VNC используется порт 5900.

При доступе к настройкам весов по протоколу VNC используется порт 5901 (только для весов ревизии 2).

При доступе к настройкам весов по протоколу HTTP используется порт 27710 (только для весов ревизии 2).

При доступе к настройкам весов по протоколу HTTP используется порт 27711 (только для весов ревизии 2).

Файловый обмен и пароли для доступа

Программное обеспечение (ПО) весов находится в каталоге: .

Для доступа только к данному каталогу посредством  SCP, FTP или SMB/CIFS создан отдельный пользователь r1sensor.

Пароль по умолчанию: r1sensoruser
.

Все данные импорта, протоколов работы, архивов, флагов и отчетов находятся в каталоге обмена: .

Для доступа к данному каталогу посредством SCP, FTP или SMB/CIFS создан отдельный пользователь ftp. Пароль по умолчанию: ftpuser
.

!

Для доступа к корневой файловой системе весов посредством SCP, FTP или SMB/CIFS осуществляется под пользователем root. Пароль по умолчанию: 3342222

! При включении загрузки данных по протоколу Digi пароль для пользователя root может быть изменен, если это задано в настройках.
!

Пароль по умолчанию при работе по протоколу Digi: teraoka

Пароли для доступа можно изменить в настройках весов, либо с помощью удаленного управления через telnet/SSH.

Внимание: При получении доступа используя данные пользователя root можно повредить/удалить/изменить файлы необходимые для нормальной работы весов, что может привести к их полной неработоспособности.

ПО для удаленного управления

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

PuTTY скачивается здесь.

KiTTY скачивается здесь.

TinyVNC скачивается здесь.

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

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

Эти команды находятся в файле конфигурации в папке в каталоге home. Сценарий startup был создан при запуске на предыдущем шаге, однако мы создадим собственный сценарий для запуска рабочего стола Xfce.

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

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

Результат должен выглядеть следующим образом, хотя вы увидите другой PID:

Прежде чем изменять файл , следует создать резервную копию исходного файла:

Создайте новый файл и откройте его в текстовом редакторе:

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

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

Чтобы сервер VNC мог использовать новый файл startup, нужно сделать его исполняемым.

Перезапустите сервер VNC.

Результат будет выглядеть примерно так:

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

DESCRIPTION

vncviewer
is a viewer (client) for Virtual Network Computing. This
manual page documents version 4 for the X window system.

If you run the
viewer with no arguments it will prompt you for a VNC server
to connect to. Alternatively, specify the VNC server as an
argument, e.g.:

vncviewer
snoopy:2

where
’snoopy’ is the name of the machine, and
’2’ is the display number of the VNC server on
that machine. Either the machine name or display number can
be omitted. So for example «:1» means display
number 1 on the same machine, and «snoopy» means
«snoopy:0» i.e. display 0 on machine
«snoopy».

As another
quick way to start a connection to a VNC server, specify a
.tigervnc configuration file as an argument to the viewer,
e.g.:

vncviewer
./some.tigervnc

where
’./some.tigervnc’ is an existing and valid
TigerVNC configuration file. The file name needs to include
a path separator. Additional options may be given too, but
the given configuration file will overwrite any conflicting
parameters.

If the VNC
server is successfully contacted, you will be prompted for a
password to authenticate you. If the password is correct, a
window will appear showing the desktop of the VNC
server.

Установка VNC Server на Ubuntu 18.04

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

Чтобы установить VNC server в Ubuntu выполните такую команду:

sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-xorg-extension tigervnc-viewer

Также необходимо установить эмулятор терминала xterm, его программа будет использовать для запуска тестового окружения:

Для запуска сервера используется команда vncserver. Её синтаксис очень прост:

vncserver порт: номер_дисплея опции

  • -dry-run — тестовый запуск, не выполнять никаких реальных действий;
  • -verbose — включить более подробный вывод;
  • -useold — запустить VNC сервер только если он ещё не запущен;
  • -cleanstale — очистить оставшиеся файлы после предыдущего запуска;
  • -localhost — разрешить подключения только с локального компьютера;
  • -name — имя VNC сервера, которое будет отображаться при подключении, по умолчанию используется host:display# (username);
  • -geometry — разрешение экрана для запускаемого окружения, например, 1024×768;
  • -depth — глубина цвета, доступны значения: 8, 15, 16 и 24;
  • -fg — не запускать сервис в фоновом режиме и оставить его привязанным к терминалу;
  • -autokill — автоматически останавливать сервер после завершения подключения;
  • -xstartup — программа, которую следует использовать вместо оболочки;
  • -list — список запущенных серверов;
  • -kill — завершить запущенный vnc сервер.

Теперь можно попытаться запустить VNC Server:

vncserver -xstartup /usr/bin/xterm

При первом запуске утилита предложит вам ввести пароль, который можно будет использовать для подключения к компьютеру, а также ввести пароль для подключения в режиме только просмотр. Последнее можно пропустить

Обратите внимание, что утилиту необходимо запускать от имени обычного пользователя, а не суперпользователя

Утилита не только создаст конфигурацию, но и запустит VNC сервер. Посмотреть список запущенных серверов можно командой:

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

Мы запускали TigerVNC с рабочем окружением в виде терминала, но теперь нам необходимо полноценное рабочее окружение Gnome. Чтобы его настроить создайте файл

/.vnc/xstartup со следующим содержимым:

#!/bin/sh dbus-launch —exit-with-session gnome-session &

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

Чтобы показать использование других опций давайте запустим vncserver на четвертом виртуальном дисплее с разрешением экрана 1024×768:

vncserver :1 -geometry 1024×768

Безопасное подключение

При подключении VNC не использует безопасные протоколы. Давайте создадим SSH-туннель для безопасного подключения к серверу (для этого на машине с VNC-сервером должен быть установлен SSH-сервер):

$ ssh -L 5901:127.0.0.1:5901 evgeniy@192.168.110.13
evgeniy@192.168.110.13's password: пароль
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-72-generic x86_64)

У меня возникло затруднение при попытке установить ssh-соединение с виртуальной машиной, на которой установлен VNC-сервер (и SSH-сервер):

$ ssh evgeniy@192.168.110.13
Connection reset by 192.168.110.13 port 22

Причина в том, что большинство дистрибутивов Linux создают ключи хоста во время установки OpenSSH-сервера. А эта виртуальная машина была клонирована с уже установленным SSH-сервером. Так что все ключи теперь недействительны. Исправить это просто — нужно удалить старые ключи хоста и сформировать их заново:

$ sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server

Ключ сервера используется в процессе обмена ключами для подтверждения того, что клиент действительно связывается с нужным сервером. Клиент ssh запрашивает публичный ключ сервера и спрашивает, можно ли ему доверять:

The authenticity of host 'XXX.XXX.XXX.XXX' can't be established.
Are you sure you want to continue connecting (yes/no)? yes

После этого отпечаток публичного ключа сохраняется в файле . В моем случае сам сервер, просматривая свои ключи, обнаруживал в них ошибку. Если посмотреть файл , то можно увидеть такие записи

..........
error: could not load host key /etc/ssh/ssh_host_rsa_key
..........
error: could not load host key /etc/ssh/ssh_host_ecdsa_key
..........
error: could not load host key /etc/ssh/ssh_host_ed25519_key
..........
fatal: No supported key exchange algorithms 

При подключении к VNC-серверу указываем не , а . Мы как бы подключаемся к локальной машине, но соединение будет проброшено через ssh-туннель на машину с VNC-сервером.

При этом на машине с установленным VNC-сервером должен быть открыт 22-ой порт:

$ sudo ufw allow ssh

А вот держать открытыми порты 5901:5903 больше не нужно, так что закрываем:

$ sudo ufw delete allow 5901:5903/tcp

Обратите внимание, что VNC-клиент Remmina умеет создавать ssh-туннель самостоятельно:

Поиск:
CLI • Linux • Ubuntu • Сервер • Клиент • Настройка • Конфигурация • VNC

About TigerVNC

Virtual Network Computing (VNC) is a remote display system which allows you to
view and interact with a virtual desktop environment that is running on another
computer on the network. Using VNC, you can run graphical applications on a
remote machine and send only the display from these applications to your local
machine. VNC is platform-independent and supports a wide variety of operating
systems and architectures as both servers and clients.

TigerVNC is a high-speed version of VNC based on the RealVNC 4 and X.org code
bases. TigerVNC started as a next-generation development effort for TightVNC
on Unix and Linux platforms, but it split from its parent project in early 2009
so that TightVNC could focus on Windows platforms. TigerVNC supports a variant
of Tight encoding that is greatly accelerated by the use of the libjpeg-turbo
JPEG codec.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *