Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12

Общая информация

При подключении к пользовательской сессии с использованием Vino экран этой сессии не блокируется. Такое подключения может быть использовано для работы удаленного помощника, когда пользователь контролирует доступ к компьютеру, но недопустимо для удаленной работы пользователей. Для удаленной работы пользователей следует использовать удаленный доступ к Astra Linux по протоколу RDP с использованием fly-dm.

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

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

Подготовка подключения
  1. На компьютере, к которому будет выполняться подключение (сервер):
    1. Должно быть установлено серверное приложение VNC;
    2. В обязательном порядке должен быть настроен доступ по паролю.
  2. На компьютере, с которого будет выполняться подключение (клиент),  должно быть установлено и запущено клиентское приложение.

Порядок установки и запуска серверного и клиентского приложений описан ниже.

Серверное приложение Vino

Установка

Серверное приложение Vino может быть установлено из основного репозитория:

sudo apt install vino libglib2.0-bin

Пакет libglib2.0-bin потребуется в дальнейшем для настройки доступа с использованием пароля и для иных настроек серверной службы.

Запуск

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

/usr/lib/vino/vino-server

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

По умолчанию серверное приложение прослушивает IP-порт 5900 протоколов IPv4 и IPv6. При запуске серверного приложения для нескольких пользователей для прослушивания выбирается следующий свободный IP-порт (5901, 5902 и т.д.). При этом подключение возможно к неактивной графической сессии, однако при неактивности сессии отображается только черный экран.

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

  1. Из графической сессии пользователя (при этом оно будет обеспечивать подключение к этой графической сессии).
  2. Из консольной сессии пользователя (в том числе из удаленной сессии SSH). При запуске из консольной сессии (включая сессию удалённого подключения по SSH) необходимо будет указать, к какой именно графической сессии должно будет осуществляться подключение, для чего перед командой  запуска указать идентификатор дисплея в формате "DISPLAY=:номер":
    DISPLAY=:0 /usr/lib/vino/vino-server
    Или из консольной сессии администратора — от имени пользователя, к чьей сессии должен быть предоставлен доступ:
    sudo -u <имя_пользователя> DISPLAY=:0 /usr/lib/vino/vino-server
    В примерах используется идентификатор дисплея ":0", это дисплей первой открытой графической сессии по умолчанию. Если открыто несколько сессий, то идентификаторы присваиваются последовательно (:1, :2 и т. д.). Получить актульный идентификатор дисплея, используемого в текущей графической сессии, можно запустив в этой сессии терминал (горячая клавиша Alt-T) и выполнив команду:
    echo $DISPLAY

Запрет автоматического запуска

Для запрета автоматического запуска для всех пользователей удалить файл /etc/xdg/autostart/vino-server.desktop:

sudo rm /etc/xdg/autostart/vino-server.desktop

Для удаления запущенных серверных служб:

sudo pkill vino-server

Настройка пароля для подключения

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

gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password "$(echo -n "<пароль>" | base64)"

Пароль при этом будет задан только для пользователя, от имени которого выполнена команда.

Настройки серверного приложения

Для настройки приложения можно использовать инструмент gsettings (предоставляется пакетом libglib2.0-bin).

Получить список доступных параметров:

gsettings list-keys org.gnome.Vino

Значения параметров:

ПараметрДопустимые значенияЗначение по умолчаниюКомментарий
alternative-portНомер порта5900Номер IP-порта, прослушиваемого службой
authentication-methodsnone/vncnoneПри значении none аутентификация не требуется.
Значение vnc включает аутентификацию по паролю
disable-backgroundtrue/falsefalseОтключать показ изображения рабочего стола, когда удаленный пользователь берет управление
disable-xdamagetrue/falsefalseОтключать расширение Xdamage для X.org
enabledtrue/falsetrueРазрешить работу серверной службы
icon-visibilityalways/client/neverclientОтображать значок удаленного подключения:
  • always — всегда;
  • cleint — только при подключении;
  • never — никогда

Значок отображается в системном трее в правом нижнем углу экрана.

lock-screen-on-disconnecttrue/falsefalseБлокировать экран при отключении удаленного соединения
mailtoАдрес электронной почтыпустоНе используется
network-interfaceИмя сетевого интерфейсапустоИмя сетевого интерфейса, через который будет осуществляться подключения, например, eth0
notify-on-connecttrue/falsetrueОтображение уведомления о том, что подключился удаленный пользователь. Для обеспечения безопасности рекомендуется использовать значение true 
prompt-enabledtrue/falsefalseЗапрашивать разрешение на подключение. Для обеспечения безопасности рекомендуется использовать значение true 
require-encryptiontrue/falsefalseИспользовать защитное преобразование передаваемых данных. Для защиты передаваемых данных рекомендуется использовать защищенный канал SSH, см. далее.
use-alternative-porttrue/falsefalseИспользовать значение параметра alternative-port для выбора IP-порта
use-upnptrue/falsefalseСоздавать запрос маршрутизатору для открытия используемого IP-порта
view-onlytrue/falsefalseПредоставлять доступ только для чтения без возможности управления
vnc-passwordпарольпустоПароль для аутентификации. Пароль хранится в формате base64.

Получить значение параметра:

gsettings get org.gnome.Vino vnc-password <имя_параметра>

Установить значение параметра:

gsettings set org.gnome.Vino vnc-password <имя_параметра> <значение>

Изменения значений параметров применяются автоматически.

Клиентское приложение Vncviewer

Установка

Клиентское приложение для подключения к Vino может быть установлено из основного репозитория:

sudo apt install tigervnc-viewer


Подключение

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

vncviewer -ViewOnly=0 -DotWhenNoCursor=1 имя_адрес_хоста

Подробно параметры клиентского приложения описаны в справочной системе man:

man vncviewer

Защита соединений с помощью SSH

Для защиты данных, передаваемых между сервером и клиентом VNC, можно использовать встроенные средства SSH. Для этого на сервере устанавливается и запускается серверная служба SSH.
Для создания защищенного SSH-соединения с сервером выполнить команду на клиентской машине:

ssh -L 5901:localhost:5900 user@server
Где:

  • 5901 - номер локального IP-порта, через который осуществляется туннелирование (возможно выбрать любой свободный IP-порт, в том числе IP-порт 5900 (это номер IP-порта VNC, применяемый по умолчанию));
  • 5900 - номер IP-порта на сервере, на который осуществляется туннелирование (5900 - это номер IP-порта VNC, применяемый по умолчанию, можно выбрать другой, но тогда на сервере при запуске серверного приложения нужно будет указать, к какому IP-порту следует подключаться этому приложению);
  • user - имя пользователя на сервере. Подключение к серверу выполняется под этим именем;
  • server - имя или IP-адрес сервера;

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

vncviewer -ViewOnly=0 -DotWhenNoCursor=1 localhost:5901