Audio faq

Установка и настройка VNC сервера

Рассмотрим два варианта использования графической оболочки — xfce и gnome.

Если используем XFCE

Установка

Установку выполняем следующей командой:

apt install xfce4 xfce4-goodies tightvncserver

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

vncserver

… на запрос пароля вводим его дважды.

* Если система не затребует второй раз пароль, проверьте внимательно сообщение. Сервер может выдать ошибку, если пароль будет короткий.

После будет предложено ввод пароля для гостевого доступа — можно согласиться (y) и ввести пароль или отказаться (n).

Настройка

Для начала, останавливаем экземпляр VNC сервера:

vncserver -kill :1

* экземпляр :1, по умолчанию, слушает на порту 5900+1 (5901).

Настраиваем VNC сервер:

vi ~/.vnc/xstartup

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4

Снова запускаем vncserver:

vncserver

Установка

Установку выполняем следующей командой:

apt install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal vnc4server

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

vncserver

… на запрос пароля вводим его дважды.

* Если система не затребует второй раз пароль, проверьте внимательно сообщение. Сервер может выдать ошибку, если пароль будет короткий.

После будет предложено ввод пароля для гостевого доступа — можно согласиться (y) и ввести пароль или отказаться (n).

Настройка

Для начала, останавливаем экземпляр VNC сервера:

vncserver -kill :1

* экземпляр :1, по умолчанию, слушает на порту 5900+1 (5901).

Настраиваем VNC сервер для текущего пользователя:

vi ~/.vnc/xstartup

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80×24+10+10 -ls -title «$VNCDESKTOP Desktop» &
x-window-manager &
gnome-panel &
gnome-settings-daemon &
metacity &

Снова запускаем vncserver:

vncserver

История

VNC была создана в Olivetti & Oracle Research Lab, которая в то время принадлежала Olivetti и Oracle Corporation. В 1999 году лаборатория была приобретена компанией AT&T, которая закрыла отдел разработок в 2002 году. Оригинальные исходные коды доступны на условиях лицензии GPL, как и многие варианты VNC, существующие на данный момент.

Название возникло из компьютерной сети тонких клиентов Videotile, которая представляла собой ЖК-дисплей с вводом пером и быстрым ATM-подключением к сети. По существу, VNC — программная реализация «ATM Network Computer».

Разработчики, работавшие над VNC в AT&T Research Lab:

  • Tristan Richardson
  • Квентин Стаффорд-Фрейзер (англ.)
  • James Weatherall
  • Ken Wood
  • Энди Хоппер
  • Charlie McLachlan
  • Paul Webster
  • Jony Playa

Description

vncserver-virtual starts VNC Server in Virtual Mode, to create a virtual desktop and provide a dedicated workspace for connected VNC Viewer(s). A virtual desktop persists until VNC Server is explicitly stopped, even if the user starting it is logged out, or all VNC Viewers disconnect. It is entirely independent of the console of the host computer; neither the desktop of the currently logged on user, nor the login screen, are available to connected VNC Viewers.

By default, a VNC Viewer can authenticate to a VNC Server that has:

  • A Professional or Enterprise subscription by supplying the system credentials of the user starting VNC Server. Specify the Permissions parameter to widen access to other users or groups.
  • A Home subscription by supplying a password specific to VNC Server; see vncpasswd(1).

Note that vncserver-virtual is the recommended interface to Xvnc. vncserver-virtual passes all COMMANDS and OPTIONS to Xvnc, and in addition runs a default desktop environment, handles logging, and prompts for a password if the VNC password authentication scheme is chosen. Note there may be circumstances in which you need to interact with Xvnc directly; see Xvnc(1). Note also that vncserver is a symlink to vncserver-virtual.

Run vncserver-virtual to start VNC Server and create a virtual desktop on the first available display, for example 1. By convention, this equates to a port number of 5900 + DISPLAY, so in this case port 5901. Note that no user interface is available for you to work with VNC Server; specify OPTIONS to configure VNC Server before it starts. Run  to start VNC Server on the specified display, if it is available.

Note that as an alternative VNC Server can be started automatically to create virtual desktops on demand; see vncserver-virtuald(1).

Quick options

The quick options relate to the following configurationsettings:

Auto

LAN

Medium

Modem

Slow

Ultra

View OnlyNo keyboard or mouse events are sent from the viewer to theserver. The server screen can only be viewed, but notcontrolled.Auto scalingThe viewer window is automatically scaled to fit the size ofyour local screen.Use DSM PluginChoose a DSM (Data Stream Modification) Plugin and configureit.To use an encryption plugin, for instance, check this option andselect the plugin in the combo box. The plugin file must be inthe same directory than the vncviewer.exe program. And of course,the same plugin mustbe used by the UltraVNC server you connectto.Proxy/RepeaterSpecify the repeateraddress here.Save connection settings as defaultIf checked, the current settings are saved as default optionsin a configuration file. So next time you run the viewer, youdon’t have to reselect all your favorite settings.Further viewer configuration can be done when pressing the button.

Format and Encoding

See Encodings section below.Note: Grey colors only works with 32 bits color screenresolution. 16/24 bits color resolutions just don’t work withgrey colors.Mouse buttonsMouse cursorDisplayMiscellaneous

number of time the reconnect is attempted 0 (default), never reconnect9 (maximum) 9 time trying reconnect.gui reconnectnumber only for now.This is the number of times a reconnect is made before the viewer close the connection.

Maximum Security

For maximum security, you should configure the VNC server to use
an encrypted connection. You should also use UNIX authentication,
restrict the allowed users, and enable the query connection mechanism to
manually approve new connections:

SecurityTypes=RA2
RSA_Private_Key_File=$HOME/.vnc/private.key
UserPasswdVerifier=UnixAuth
AllowedUsers=root:f,bob:f
AllowedGroups=staff:d
QueryConnect=1

With the above configuration, only encrypted connections are
supported. This could be relaxed by changing the
parameter from to , ensuring that
the password is always encrypted, but allowing viewers to request an
unencrypted session. Both and the superuser are granted
full access rights and can connect without approval; members of the
group can also connect, but must be approved. All users must enter their
UNIX password in order to connect.

Note that in order for querying of connections to work, you must
be running the applet on the desktop when using
the module (this is not necessary for ).

You can also restrict access to the server based on IP address
using the parameter, for example:

Hosts=192.168.0.0/255.255.0.0

If you are not using then you will also
need to manually run the
command to generate a secure key:

vnckeygen
Generating primes:
  p: ......................................
  q: ...................

Licensing for Enterprise subscriptions

*You’ll find a 25 character license key for offline, bulk or remote deployment on the Deployment page of your RealVNC account. You’ll also find a separate key for our previous VNC 5.x software, in case you need to remotely access legacy platforms.

To license VNC Server, you can either make a desk-side visit, or apply your license key:

  • If the remote computer is connected to the Internet and you have physical access to its graphical user interface, then you can sign in using your RealVNC account credentials in the same way as for a Home or Professional subscription.
  • If you want to license VNC Server in bulk or remotely, or if the remote computer is not currently connected to the Internet, you must use your license key.

*If you use a license key, direct connectivity is automatically enabled, but there’s a separate step to enable cloud connectivity.

Applying a license key desk-side via the License Wizard

If you do have desk-side access, you can enter your license key in the graphical License Wizard if you wish. Right-click the VNC Server tray icon and select Licensing:

Select the Register offline button at the bottom of the License Wizard and follow the instructions:

Applying a license key at the command line

Run the appropriate command below as an administrator:

  • Windows: 
  • Mac: 
  • Linux: 

To obtain your KEY, navigate to the Deployment page of your RealVNC account. For example, under Windows:

*Under Linux, our example script explains how to install, license, configure and start VNC Server entirely at the command line.

Using VNC Server in User-Mode

If you are just trying out VNC, or wish to provide access to your
desktop infrequently, for support or collaboration purposes, then you
may find it best to run VNC Server in User-Mode.

During the installation, leave the tickboxes which refer to the
VNC Server System Service unticked, to prevent VNC Server being
installed in Service-Mode on your system.

When you want to use VNC Server, go to the VNC Server (User-Mode)
program group (usually found under RealVNC in the Start Menu), and click
on Run VNC Server. The VNC Server icon will appear in the system tray,
to indicate that VNC Server is running.

At this point, you probably want to configure your personal VNC
Server settings for User-Mode. Right-click on the tray icon and select
Options…, change the settings you want and click Apply or Ok. Note
that you must at least configure the Authentication tab, otherwise you
won’t be able to connect in to your server — this is deliberately the
case, to avoid accidentally opening up your computer to attacks.

Первый запуск приложения

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

Как пользоваться VNC Viewer?

Сначала через файловое меню выбираете пункт нового подключения (New Connection), а затем в новом окне вводите IP-адрес удаленного терминала или полное название компьютера (адрес можно узнать на подключаемой машине, воспользовавшись свойствами интернет-соединения или командной строкой с вводом команды ipconfig, а имя компьютера можно просмотреть в свойствах системы). После этого появится окошко запроса пароля, в котором нужно ввести искомую комбинацию. При соответствии комбинации установленному на удаленном компьютере паролю появится удаленный «Рабочий стол».

Reconfiguring running programs

You can reconfigure:

  • Any running program using its Options dialog, if it has one. See Using the Options dialog.
  • VNC Server only by reloading parameters. See Reloading parameters below.

Note that most changes take effect immediately. Changes to a few parameters, however, require all connections to be terminated, and changes to a very small minority require the program to be restarted. See VNC Connect Parameter Summary  for more information.

Using the Options dialog

Most programs have an Options dialog, providing a user-friendly interface to the parameter mechanism. An Options dialog typically consists of several tabs or pages devoted to particular topics such as security or connectivity, and an Expert tab or page enabling users to edit parameters directly.

Note the following:

  • The Options dialog for VNC Server in Service Mode requires elevated privileges.
  • The Options dialog for VNC Server in Virtual Mode is only available to connected users.
  • The Options dialog can be hidden from users. See Preventing Users Configuring VNC Connect
  • Parameters set by policy are disabled in the Options dialog.

Changes made in an Options dialog automatically update a particular Registry key or VNC configuration file; see the tables below. When the OK or Apply button is clicked, all Registry keys or VNC configuration files for that program are then reloaded.

Windows

Program The Options dialog updates…
VNC Server in Service Mode
VNC Server in User Mode
VNC Viewer

See Populating the Windows Registry with parameters for a complete list of Registry keys and the order in which they are applied.

Linux

Program The Options dialog updates…
VNC Server in Service Mode
VNC Server in User Mode
VNC Server in Virtual Mode
VNC Viewer

See Populating VNC configuration files with parameters for a complete list of VNC configuration files and order in which they are applied.

Mac

Program The Options dialog updates…
VNC Server in Service Mode
VNC Server in User Mode
VNC Viewer

See Populating VNC configuration files with parameters for a complete list of VNC configuration files and order in which they are applied.

Reloading parameters

You can reconfigure a running instance of VNC Server without downtime by editing Registry keys (Windows) or VNC configuration files (other platforms) and then running the  command to re-apply all Registry keys or VNC configuration files to that instance of VNC Server. For example, to reload VNC Server in User Mode under Linux:

Note that:

  • The  command also re-applies license keys.
  • The  command does not re-apply:
    • Parameters specified at the command line (see Configuring programs on the command line at start-up) under Linux and Mac. If these parameters have subsequently changed, the original command line values will be overridden.
    • X options, for VNC Server in Virtual Mode under Linux. 
  • To reload all running instances of VNC Server for the current user, in any mode, run the command . To reload all running instances of VNC Server in any mode for all users, run the same command with elevated privileges.

Особенности выбора инсталляционного дистрибутива

Прежде чем приступать к установке, необходимо определиться с выбором модификации VNC-клиента, который предполагается установить. Во-первых, сама программа является кроссплатформенной, может инсталлироваться практически во все известные стационарные и мобильные операционные системы. Во-вторых, для тех же ОС Windows можно найти версии программы RealVNC, TightVNC, UltraVNC и облегченную модификацию UltraVNC SC (все версии совместимы между собой, однако некоторые функции могут оказаться недоступными), для Mac OS X – Chicken и JollysFastVNC. В-третьих, следует определиться с типом устанавливаемого клиента (серверная часть используется для организации подключения с центральной машины к дочерним терминалам, а клиентская – для подключения с дочерних машин к центральному серверу).

В-четвертых, непосредственно на официальном ресурсе разработчика можно выбрать предпочитаемый формат файла установщика VNC Viewer для Windows (EXE, MSI) или загрузить дистрибутив в виде запакованного архива ZIP. Последний пункт – по желанию пользователя.

WinVNC — Advanced Settings

Extra options have been added to WinVNC for use primarily by
system administrators, to tailor the server’s behaviour to meet their
particular needs. The options are DWORD values which can be set in the
system registry, and tools such as the Windows Policy Editor can be used
to apply these settings across a large number of machines.WinVNC will
currently look for settings in the following places:

  1. Local machine-specific settings. Options
    specified here are not overridable.
    Location: HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\
  2. Local default user settings.
    Location: HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\Default
  3. Local per-user settings. These override the
    local default user settings. If there is no current user, the username
    SYSTEM will be used.
    Location: HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\<username>
  4. Global per-user settings. These are only read
    if AllowProperties has not been set to zero (see below).
    Location: HKEY_CURRENT_USER\Software\ORL\WinVNC3

Most options can only be specified in a subset of these places,
as specified in each option’s description below.

VNC configuration files

Parameters can be specified as command line OPTIONS, but preferably in VNC configuration files. VNC configuration files are available for:

  • All programs, or just VNC Server
  • All users of the computer, or just the user starting VNC Server
  • Policy, in order to lock down VNC Server (Enterprise subscription required)

When VNC Server starts, parameters are applied in the following order:

  1. System-wide VNC configuration files
  2. Per-user VNC configuration files
  3. Command line OPTIONS
  4. Policy VNC configuration files

This means that a particular parameter specified at the command line overrides the same parameter specified in a per-user or in a system-wide VNC configuration file, but is itself overridden by the same parameter specified in a policy VNC configuration file. Policy cannot be changed by users.

Note there is a disadvantage to specifying parameters at the command line: parameters cannot be reloaded while VNC Server is running. VNC configuration files can be reloaded, however, which means that VNC Server can be reconfigured without downtime.

Установка 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. Выполните команду:

Результат должен быть следующим:

Если вы видите это, значит все настроено правильно.

Запуск сервера и подключение клиента

На стороне сервера

Запуск VNC сервера на Сервере выполняется командой:

tightvncserver :1 -geometry 800x600 -dpi 96 -localhost -nolisten tcp :1

Остановка сервера:

tightvncserver -kill :1

Здесь 800×600 это размер экрана Клиента, а 96 это плотность точек полученная ранее на Сервере. Причём 96 совсем не факт, что хорошее значение. Можно поиграться +/-1 или больше, посмотреть как оно глазам будет комфортнее. Плотность точек в наибольшей степени влияет на отрисовку шрифтов. На размеры окон, линеек в разных программах влияете тоже, но к эргономике это имеет куда меньше отношения. Скорее всего есть минимум два значения: 1) когда на экране отличное изображение и размеры близки к реальным, 2) когда размеры мелки, но шрифты легко читаемы. Не исключено, что это может быть интересно для ультра малых экранов Клиента.

800×600 можно заменить на уместную величину. Обычно — чуть меньше размера экрана клиента.

Обозначение ‘:1’ это системный идентификатор виртуального экрана. Вероятно, имеет смысл выбирать его большим. Во всяком случае, на Сервере, в момент запуска VNC службы, не должно быть других виртуальных экранов с этим номером. Номера идут от 0 для локального пользователя. Потом выделяются по мере надобности. В случае использования локального переключения пользователей единица может оказаться занятой. Можно выбрать следующий номер. Использованные номера можно увидеть в выводе команды:

ls -a /tmp/.X*-lock /tmp/.X11-unix/X*

На стороне клиента

Подключение со стороны клиента происходит в два этапа. Сначала создаётся туннель:

ssh -L 12345:localhost:5901 username@hostserver

Потом инициируется подключение к виртуальному экрану:

vncviewer  -passwd "${HOME}/.vnc/passwd.username.hostserver" localhost:12345

Если ошибок не было, то появится окно соответствующее отдельному виртуальному экрану Сервера. Внизу будет ‘fbpanel’, обычное меню для запуска программ и т.п.

Со стороны Клиента VNC сервер можно удалённо стартовать в одну команду:

ssh username@hostserver "tightvncserver :1 -geometry 800x600 -dpi 96 -nevershared -localhost -nolisten tcp :1" && ssh -L 12345:localhost:5901 username@hostserver

Останавливать:

ssh username@hostserver "tightvncserver -kill :1"

В файле ‘~/.bash_aliases’ можно описать короткие синонимы этих команд:

alias vncstart-username-hostserver='ssh username@hostserver "tightvncserver :1 -geometry 800x600 -dpi 96 -nevershared -localhost -nolisten tcp :1" && ssh -L 12345:localhost:5901 username@hostserver'
alias vncclose-username-hostserver='ssh username@hostserver "tightvncserver -kill :1"'
alias vncconnect-username-hostserver='vncviewer localhost:12345 &'

При использовании ‘~/.bash_aliases’ надо в файле ‘~/.bashrc’ найти секцию отвечающую за синонимы и снять в ней комментарии. В итоге секция должна выглядеть так:

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
 
if  -f ~.bash_aliases ; then
    . ~.bash_aliases
fi

Commands

Applying one of the following commands to vncserver-virtual performs an auxiliary operation instead of starting VNC Server:

Deletes any /tmp/.X11-unix directory and /tmp/.X<num> files that may persist if VNC Server is stopped abruptly.
Shows a help summary.
Stops VNC Server, disconnecting all VNC Viewers, and destroying the virtual desktop on DISPLAY.
Shows a list of OPTIONS.

Test mode. The environment and any OPTIONS are tested, and the expected command is printed rather than executed. For example:

vncserver-virtual -test :1 -config=/my/Xvnc/options

verifies that display 1 is available, checks that the /my/Xvnc/options file contains only valid Xvnc options in the correct format for the X server, prints the command, and exits.

Connecting to a VNC Server

If installed by the WinVNC setup package then VNC Viewer is
accessible from the Start Menu.

If downloaded directly, the VNC Viewer can be run either by
double-clicking on the program icon, or from the command-line.

The VNC Viewer will present the Connection Details dialog,
allowing the IP address or name of the target VNC Server to be
specified.

If the VNC server’s Display Number is non-zero then the display
number can be specified by adding a colon to the server’s IP address or
name, followed by the display number:

If the VNC server is using a non-standard port number to accept
connections then this is specified by adding two colons to the
server’s address or name, followed by the port number:

Once you have selected the VNC server to connect to, you can
simply click Ok or press return to attempt to connect to it. If your
connection attempt succeeds then the server’s details will be added to
the Connection Details drop-down menu, to save you typing next time.

Installation

VNC Server Enterprise Edition for Windows is installed as an
optional component of the setup package. If VNC Server has been
installed then a number of icons will be created for it under the Start
Menu, at the location specified during installation (usually RealVNC).

The final stage of installation of VNC Server Enterprise Edition
is entry of a valid license key, if one was not already installed on the
host computer. Alternatively, a 7-day trial license key can be installed
on a machine, provided that VNC Server Enterprise Edition has not been
used on that machine before. If no valid license key is entered then VNC
Server will reject all incoming VNC connections. A valid license key can
be supplied at a later time via the Set License Key
item in the VNC Server 4 (Service-Mode) section of the
Start menu.

VNC Server for Windows is designed to run either in User-Mode, as
a personal per-user server, or in Service-Mode, as a system service
available whether or not there is a user logged in. Note that the
enhanced authentication features may not be available on some platforms
from User-Mode VNC Servers.

The logged-on user can also choose to run their own personal
User-Mode server alongside an existing Service-Mode server installed on
the machine, provided that the two servers are configured to operate on
different network port numbers.

Настройка VNC-сервера

Существует несколько способов запуска VNC, включая использование сценариев, привязку VNC к среде рабочего стола с помощью настольных инструментов и использование для прослушивания VNC-соединений. Этот последний подход и описывается здесь, так как он позволяет запускать VNC так, что тот может использовать XDMCP-сервер. Прежде чем перейти к инструкциям по настройке VNC для запуска посредством , необходимо выбрать VNC-сервер.

Выбор VNC-сервера

Существует несколько программ VNC-сервера. (См. раздел ). Некоторые из наиболее популярных: TightVNC, TigerVNC и RealVNC. В этой статье в качестве примера используется TightVNC. К сожалению, детали конфигурации зависят как от сервера, так и от дистрибутива, поэтому приведенные здесь инструкции нужно будет адаптировать к своему программному обеспечению.

Установка xinetd

Многие дистрибутивы устанавливают суперсервер по умолчанию, но не все. Так как описанный здесь метод предполагает использование , необходимо установить , если он еще не установлен. В большинстве дистрибутивов можно установить с помощью менеджера пакетов, например, вызывав в дистрибутивах на основе Debian или в openSUSE.

Может также потребоваться настройка процесса запуска . Обычно для одноразового запуска можно использовать сценарий запуска System V (SysV):

# /etc/init.d/xinetd start

Для настройки автоматического запуска при загрузке компьютера требуется знание методов работы сценариев запуска своего дистрибутива. Как правило, это делается с помощью утилиты, такой как (используется в Fedora, openSUSE и родственных дистрибутивах), (используется в Debian и родственных дистрибутивах) или (используется в Gentoo), примерно так:

# chkconfig xinetd on
# update-rc.d xinetd enable
# rc-update add xinetd default

Введите только одну из этих команд или найдите эквивалент для своего дистрибутива.

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

Настройка xinetd

Серверы, которыми должен управлять , помещают файлы конфигурации в каталог /etc/xinetd.d. Таким образом, чтобы настроить на управление VNC, нужно создать или отредактировать файл с именем типа /etc/xinetd.d/vnc. (В некоторых дистрибутивах, таких как openSUSE, пакет VNC-сервера устанавливает такой файл.) В листинге 1 приведен пример.

Листинг 1. Пример настройки VNC для xinetd
service vnc
{
   disable     = no
   socket_type = stream
   protocol    = tcp
   wait        = no
   user        = nobody
   server      = /usr/bin/Xvnc
   server_args = -inetd -once -query localhost -geometry 1024x768 -depth 16
   type        = UNLISTED
   port        = 5900
}

Эта запись задает несколько параметров , большинство из которых нужно оставить как есть. Ниже перечислены те параметры, которые могут потребовать настройки.

  • . VNC с разными параметрами можно запустить через несколько портов, но в этом случае в первой строке листинга 1 нужно присвоить VNC отдельное имя службы для каждого порта.
  • . Этот параметр нужно изменить так, чтобы он указывал на главный двоичный файл VNC-сервера, который обычно называется Xvnc.
  • . Некоторые из этих значений вы почти наверняка захотите изменить, как описано ниже.
  • . VNC использует порты с номерами 5900 и выше. Можно запустить сервер с разными значениями параметров через разные порты. В этом случае каждому экземпляру нужно назначить свой номер порта.

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

  • . Этот параметр указывает, что сервер VNC X должен проверять систему localhost на аутентификацию XDMCP. Его можно изменить, если вы хотите использовать один компьютер в качестве транслятора для доступа к программам другого.
  • . Этот параметр устанавливает виртуальное разрешение сеанса VNC. Заметим, что это разрешение не обязательно должно соответствовать разрешению обычного X-сервера, работающего на компьютере сервера. Можно создать несколько записей, работающих с разным разрешением, чтобы пользователи могли входить в VNC-сервер с тем разрешением, которое удобно для их локальных систем.
  • . Этот параметр задает глубину цвета. Чем ниже значение, тем быстрее обновляется дисплей, но на экране с большим количеством цветов могут появиться искажения. Диапазон допустимых значений от 2 до 32.

Имеются многие другие параметры, и некоторые из них зависят от VNC-сервера. Обращайтесь к документации по своему серверу VNC.

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

При подключении 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

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий