Как установить и настроить удаленный доступ VNC для рабочего стола GNOME в CentOS 7

Вступление

  • VNC * или Virtual Network Computing - это независимый от платформы протокол, который позволяет пользователям подключаться к удаленной компьютерной системе и использовать ее ресурсы из графического интерфейса пользователя (GUI).

Это похоже на дистанционное управление приложением: нажатия клавиш или щелчки мыши на компьютере передаются по сети на удаленный компьютер. VNC также позволяет совместное использование буфера обмена между обоими компьютерами. Если вы работаете с сервером Microsoft Windows, VNC очень похож на службу удаленного рабочего стола, за исключением того, что она также доступна для OS X, Linux и других операционных систем.

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

цели

В этом уроке мы узнаем, как установить и настроить VNC-сервер в CentOS 7. Мы установим сервер TigerVNC, который свободно доступен в TigerVNC GitHub хранилище.

Чтобы продемонстрировать, как работает VNC, мы также установим рабочий стол GNOME на ваш сервер CentOS. Мы создадим две учетные записи пользователей и настроим для них доступ VNC. Затем мы проверим их подключение к удаленному рабочему столу и, наконец, узнаем, как обезопасить удаленное подключение через туннель SSH.

Предпосылки

Команды, пакеты и файлы, показанные в этом руководстве, были протестированы на минимальной установке CentOS 7. Мы рекомендуем следующее:

  • * Distro *: CentOS 7, 64-разрядная версия

  • * Требования к ресурсам *: капля с 2 ГБ оперативной памяти

  • Чтобы следовать этому руководству, вы должны использовать пользователя sudo. Чтобы понять, как работают привилегии sudo, вы можете обратиться к this учебник DigitalOcean

_ * Предупреждение: * Вы не должны запускать какие-либо команды, запросы или конфигурации из этого руководства на производственном сервере Linux. Это может привести к проблемам безопасности и простоям. _

Шаг 1 - Создание двух учетных записей пользователей

Сначала мы создадим две учетные записи пользователей. Эти учетные записи будут удаленно подключаться к нашему серверу CentOS 7 с клиентов VNC.

  • joevnc

  • janevnc

Выполните следующую команду, чтобы добавить учетную запись пользователя для * joevnc *:

sudo useradd -c "User Joe Configured for VNC Access" joevnc

Затем выполните команду для изменения пароля * joevnc *:

sudo passwd joevnc

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

Changing password for user joevnc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Далее создайте аккаунт для * janevnc *:

sudo useradd -c "User Jane Configured for VNC Access" janevnc

Установите пароль для * janevnc *:

sudo passwd janevnc

Шаг 2 - Установка рабочего стола GNOME

Теперь мы установим рабочий стол GNOME. GNOME - это совместная работа: это коллекция бесплатного программного обеспечения с открытым исходным кодом, которое составляет очень популярную рабочую среду. Есть и другие окружения рабочего стола, такие как KDE, но GNOME более популярен. Наши пользователи VNC будут использовать GNOME для взаимодействия с сервером со своего рабочего стола:

sudo yum groupinstall -y "GNOME Desktop"

В зависимости от скорости вашей сети, это может занять несколько минут.

После установки группы пакетов перезагрузите сервер:

sudo reboot

Устранение неполадок - сервер застрял на этапе загрузки

В зависимости от того, как был настроен ваш сервер, при запуске компьютера он может оставаться в фазе загрузки, показывая следующее сообщение:

Initial setup of CentOS Linux 7 (core)
1) [!] License information (Licence not accepted)
Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]:

Чтобы обойти это, нажмите * 1 * (чтение лицензии), затем * 2 * (принять лицензию), а затем * C * (чтобы продолжить). Возможно, вам придется нажать * C * два или более раз. Изображение ниже показывает это:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/1.jpg [Сообщение о фазе загрузки в CentOS 7 после установки рабочего стола GNOME]

Если вы не видите эту ошибку и процесс загрузки проходит гладко, тем лучше - вы можете перейти к следующему шагу.

Шаг 3 - Установка сервера TigerVNC

TigerVNC - это программное обеспечение, которое позволит нам подключиться к удаленному рабочему столу.

Установите сервер Tiger VNC:

sudo yum install -y tigervnc-server

Это должно показать результат как следующее:

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

. . .

Running transaction
 Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1
 Verifying  : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64                                                      1/1

Installed:
 tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7

Complete!

Теперь у нас есть VNC-сервер и рабочий стол GNOME. Мы также создали две учетные записи пользователей для подключения через VNC.

Шаг 4 - Настройка службы VNC для двух клиентов

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

sudo systemctl status vncserver@:.service

Вывод будет таким:

vncserver@:.service - Remote desktop service (VNC)
  Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled)
  Active: inactive (dead)

Вы также можете запустить эту команду:

sudo systemctl is-enabled [email protected]

Это должно показать вывод как это:

disabled

Так почему же он отключен? Это связано с тем, что каждый пользователь запускает отдельный экземпляр демона службы VNC. Другими словами, VNC не работает как отдельный процесс, который обслуживает каждый пользовательский запрос. Каждый пользователь, подключающийся через VNC, должен будет запустить новый экземпляр демона (или системный администратор может автоматизировать это).

CentOS 7 использует демон для запуска других сервисов. Каждый сервис, который изначально работает под управлением systemd, имеет файл service unit, который помещается в каталог + / lib / systemd / system + установщиком yum. Процессы, которые запускаются автоматически во время загрузки, имеют ссылку на этот файл служебного блока, расположенный в каталоге + / etc / systemd / system / +.

В нашем случае файл общего сервисного модуля был создан в каталоге + / lib / systemd / system / +, но не было сделано никакой ссылки в + / etc / systemd / system / +. Чтобы проверить это, выполните следующие команды:

sudo ls -l /lib/systemd/system/vnc*

Тебе следует увидеть:

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

Затем проверьте в + / etc / systemd / system / +:

sudo ls -l /etc/systemd/system/*.wants/vnc*

Этого не существует:

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

Итак, первый шаг - запустить два новых экземпляра VNC-сервера для наших двух пользователей. Для этого нам нужно будет сделать две копии файла универсального модуля обслуживания VNC в + / etc / system / system +. В приведенном ниже фрагменте кода вы делаете две копии с двумя разными именами:

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.service

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service

Так почему же мы добавили два числа (вместе с двоеточием) в имена скопированных файлов?

Опять же, это возвращается к концепции отдельных услуг VNC. VNC сам по себе работает в порту. Поскольку каждый пользователь будет запускать свой собственный VNC-сервер, каждому пользователю придется подключаться через отдельный порт. Добавление числа в имя файла указывает VNC запустить эту службу как sub-port из + 5900 +. Таким образом, в нашем случае служба VNC * joevnc * будет работать на порту (5900 + 4), а служба * janevnc * - (5900 + 5).

Затем отредактируйте файл единицы обслуживания для каждого клиента. Откройте файл + / etc / systemd / system / vncserver @: 4.service + с помощью редактора * vi *:

sudo vi /etc/systemd/system/vncserver@:4.service

Изучив раздел «Quick HowTo», мы узнаем, что мы уже выполнили первый шаг. Теперь нам нужно пройти оставшиеся шаги. Комментарии также говорят нам, что VNC является ненадежным соединением. Мы поговорим об этом позже.

А сейчас отредактируйте раздел + [Service] + файла, заменив экземпляры + <USER> + на ++. Кроме того, добавьте условие + -geometry 1280x1024 + в конце параметра + ExecStart +. Это просто говорит VNC размер экрана, с которого он должен начинаться. Всего вы измените две строки. Вот как должен выглядеть отредактированный файл (обратите внимание, что весь файл не отображается):

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#   ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#

. . .

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i "
PIDFile=/home//.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

Сохраните файл и выйдите из vi.

Аналогично, откройте файл + / etc / systemd / system / vncserver @: 5.service + в vi и внесите изменения для пользователя * janevnc *:

sudo vi /etc/systemd/system/vncserver@:5.service

Вот только раздел + [Service] + с отмеченными изменениями:

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l  -c "/usr/bin/vncserver %i "
PIDFile=/home//.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

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

sudo systemctl daemon-reload

Включите первый экземпляр сервера:

sudo systemctl enable vncserver@:4.service

Выход:

ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'

Включите второй экземпляр сервера:

sudo systemctl enable vncserver@:5.service

Выход:

ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'

Теперь вы настроили два экземпляра VNC-сервера.

Шаг 5 - Настройка вашего брандмауэра

Далее нам нужно настроить брандмауэр так, чтобы он разрешал трафик VNC только через порты * 5904 * и * 5905 *. CentOS 7 использует Dynamic Firewall через демона; службе не нужно перезапускаться, чтобы изменения вступили в силу.

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

sudo firewall-cmd --state

Это должно показать:

running

Если состояние «не работает» по какой-либо причине, выполните следующую команду, чтобы убедиться, что оно работает:

sudo systemctl start firewalld

Теперь добавьте правила для портов 5904 и 5905:

sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp

Выход:

success

Перезагрузите брандмауэр:

sudo firewall-cmd --reload

Выход:

success

Шаг 6 - Установка паролей VNC

Мы в одном шаге от наблюдения VNC в действии. На этом этапе пользователи должны будут установить свои * пароли VNC *. Это не пароли пользователей Linux, но пароли для входа в сеансы VNC.

Откройте другое терминальное соединение с сервером CentOS 7 и на этот раз войдите в систему как * joevnc *.

ssh joevnc@

Выполните следующую команду:

vncserver

Как показано в выходных данных ниже, сервер попросит * joevnc * установить пароль VNC. После ввода пароля программа также показывает количество файлов, создаваемых в домашнем каталоге пользователя:

You will require a password to access your desktops.

Password:
Verify:
xauth:  file /home/joevnc/.Xauthority does not exist

New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1

Creating default startup script /home/joevnc/.vnc/xstartup
Starting applications specified in /home/joevnc/.vnc/xstartup
Log file is /home/joevnc/.vnc/localhost.localdomain:1.log

Давайте посмотрим на строку + New 'localhost.localdomain: 1 (joevnc)' desktop is localhost.localdomain: 1 +. * localhost.localdomain * было именем сервера в нашем примере; в вашем случае все может быть иначе. Запишите число после имени сервера: (* 1 *, разделенное двоеточием). Это не число в файле единицы обслуживания * joevnc * (которое было * 4 *). Это потому, что на этом сервере будет запускаться сеанс display number * joevnc *, а не номер порта самой службы (+ 5904 +).

Затем откройте новый сеанс терминала и войдите в систему как * janevnc *. Здесь также запустите VNC-сервер и установите пароль для * janevnc *:

vncserver

Вы должны увидеть похожий вывод, показывающий, что сеанс * janevnc * будет работать на дисплее * 2 *.

Наконец, перезагрузите сервисы из * основного терминального сеанса *:

sudo systemctl daemon-reload
sudo systemctl restart vncserver@:4.service
sudo systemctl restart vncserver@:5.service

Шаг 7 - Подключение к удаленным рабочим столам с помощью клиента VNC

В этом руководстве предполагается, что пользователи * joevnc * и * janevnc * пытаются подключиться к серверу CentOS 7 со своих компьютеров Windows.

Каждому из них понадобится VNC-клиент для Windows для входа на удаленный рабочий стол. Этот клиент похож на терминальный клиент, такой как PuTTY, только показывает графический вывод. Доступны различные VNC-клиенты, но мы будем использовать RealVNC, доступный по адресу here. VNC Viewer для Mac OS X доступен для загрузки на той же странице, а версия для Mac довольно похожа на версию для Windows.

Когда VNC Viewer запущен, он показывает диалоговое окно, подобное этому:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/2.jpg [Интерфейс просмотра RealVNC]

В поле * VNC Server * добавьте IP-адрес вашего сервера CentOS 7. Укажите номер порта после IP-адреса сервера, разделенный двоеточием (*: *). Мы использовали, потому что это сервисный порт VNC для * joevnc *.

Мы также решили позволить VNC Viewer выбрать метод шифрования. Эта опция будет шифровать только пароль, отправленный по сети. Любое последующее общение с сервером будет незашифрованным. (Мы настроим безопасный SSH-туннель на последнем этапе.)

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/3.jpg [Подключение к серверу CentOS 7 с помощью средства просмотра RealVNC в качестве joevnc]

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

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/4.jpg [Предупреждение о шифровании VNC]

Примите предупреждение на данный момент. Запрос пароля отображается:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/5.jpg [запрос пароля VNC]

Введите пароль VNC * joevnc *, который вы установили ранее.

Откроется новое окно с рабочим столом GNOME для нашего удаленного сервера CentOS:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/6.jpg [удаленный рабочий стол CentOS7]

Примите приветственное сообщение по умолчанию.

Теперь * joevnc * может запустить графический инструмент, такой как калькулятор GNOME:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/7.jpg [Запуск калькулятора GNOME с удаленного рабочего стола]

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/8.jpg [калькулятор GNOME]

Вы можете оставить это подключение к рабочему столу открытым.

Теперь * janevnc * также может начать другой сеанс VNC с сервером CentOS. IP-адрес тот же, а порт:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/9.jpg [Подключение к серверу CentOS 7 с программой просмотра RealVNC в качестве janevnc]

Когда * janevnc * входит в систему через VNC Viewer, отображается пустой рабочий стол с приветственным сообщением, как это было показано для * joevnc *. Другими словами, два пользователя не делятся экземплярами рабочего стола. На рабочем столе * joevnc * все еще должен отображаться калькулятор.

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

Закройте окна просмотра VNC для * joevnc * и * janevnc *. Закройте свои терминальные сессии тоже. В главном окне терминала проверьте, работают ли службы VNC:

sudo systemctl status vncserver@:4.service

Вывод показывает, что удаленный рабочий стол все еще работает:

vncserver@:4.service - Remote desktop service (VNC)
  Loaded:
  Active:  since Sat 2014-11-01 12:06:49 EST; 58min ago
 Process: 2014 ExecStart=/sbin/runuser -l  -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)

. . .

Проверьте второй сервис:

sudo systemctl status vncserver@:5.service

Этот тоже работает:

vncserver@:5.service - Remote desktop service (VNC)
  Loaded:
  Active:  since Sat 2014-11-01 12:42:56 EST; 22min ago
 Process: 3748 ExecStart=/sbin/runuser -l  -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS)

. . .

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

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

Устранение неисправностей - Сбои в работе VNC

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

sudo systemctl status vncserver@:4.service

Это длинное сообщение об ошибке может появиться:

vncserver@:4.service - Remote desktop service (VNC)
  Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled)
  Active:  since Fri 2014-11-07 00:02:38 EST; 2min 20s ago
 Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2)
 Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

Попытка запустить службу не работает:

sudo systemctl start vncserver@:4.service

Не удалось запустить:

. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.

Обычно причина достаточно проста. Проверьте + / var / log / messages:

sudo tail  /var/log/messages

Связанная ошибка будет выглядеть так:

Nov  7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4
Nov  7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4
Nov  7 00:08:36 localhost runuser: A VNC server is already running as :4
Nov  7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2
Nov  7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).
Nov  7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.
Nov  7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle

Средство защиты должно удалить файл в папке:

sudo rm -i /tmp/.X11-unix/X4

Выход:

rm: remove socket ‘/tmp/.X11-unix/X4’? y

Затем запустите службу VNC:

sudo systemctl start vncserver@:4.service

Общие проблемы

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

Мы рекомендуем проверить файл + / var / log / messages для лучшего понимания. Иногда вам может потребоваться перезагрузить сервер или, в крайнем случае, заново создать службу VNC.

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

Шаг 8. Защита сеансов VNC через туннелирование SSH.

До сих пор и * joevnc *, и * janevnc * обращались к своим удаленным рабочим столам по незашифрованным каналам. Как мы уже видели, VNC Viewer предупреждает нас об этом во время соединения; только пароль зашифрован в начале сеанса. Любой последующий сетевой трафик и передача данных открыты для перехвата в любой точке.

  • О SSH туннелировании *

Именно здесь могут помочь сеансы Secure Shell (SSH). С SSH VNC может работать в контексте зашифрованного сеанса SSH. Это известно как tunnelling. По сути, трафик VNC соединяется с протоколом SSH, в результате чего вся его связь с сервером шифруется. Это называется tunnelling, потому что SSH обеспечивает защиту от обхода по VNC, а VNC работает как в туннеле внутри SSH. Туннелирование SSH может использоваться и для других протоколов, таких как POP, X или IMAP.

Туннелирование SSH работает с port forwarding, который в основном является средством перевода доступа с одного конкретного порта на другой порт на другом компьютере. С переадресацией портов, когда клиентское приложение подключается к порту A, работающему на машине A, оно прозрачно перенаправляется на порт B, работающий на машине B. Клиентское приложение не знает об этом переводе и считает, что оно подключается к исходному порту. Переадресация портов является одной из особенностей протокола SSH.

Для получения более подробной информации о SSH-туннелировании читайте this tutorial.

В этом уроке мы настроили VNC для работы на портах (для * joevnc *) и (для * janevnc *).

С помощью переадресации портов мы можем настроить наш локальный клиент VNC для подключения к порту * 5900 * на локальном клиентском компьютере, и это можно сопоставить с портом * 5905 * на удаленном сервере. Это пример для соединения * janevnc *, но вы можете легко выполнить те же шаги для любых других клиентов.

Когда клиентское приложение VNC запускается, его можно указать на порт * 5900 * на * localhost *, и наша переадресация порта будет прозрачно транспортировать его на порт * 5905 * на удаленном сервере.

  • Примечание: * Вам придется каждый раз начинать раздел SSH *, чтобы обеспечить безопасность соединения.

  • OS X *

На вашем Mac откройте * Terminal *.

Введите следующую информацию о соединении, обязательно заменив ++ на IP-адрес вашего удаленного сервера:

ssh -L 5900::5905 janevnc@ -N

Введите пароль * janevnc * для UNIX. Соединение будет зависать; вы можете держать его включенным до тех пор, пока вы используете удаленный рабочий стол.

Теперь перейдите к инструкциям VNC Viewer.

  • Windows *

Для защиты сеанса VNC * janevnc * мы будем предполагать, что на локальном компьютере Windows установлен PuTTY. PuTTY бесплатна и может быть загружена с here.

Если VNC и терминальные сессии * janevnc * еще не закрыты, закройте их сейчас.

Запустите PuTTY. На экране сеанса убедитесь, что вы указали IP-адрес сервера и дали описательное имя соединению, затем нажмите кнопку * Сохранить *, чтобы сохранить сведения о соединении. Обратите внимание, как мы указали + @ + в поле * Hostname *:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/10.jpg [сведения о сеансе в конфигурации PuTTY]

Затем разверните пункт меню * SSH * в левой панели навигации и выберите элемент * X11 *. Это показывает свойства пересылки X11 для сеанса. Убедитесь, что установлен флажок * Включить пересылку X11 *. Это гарантирует, что SSH шифрует трафик X Windows, который проходит между сервером и клиентом:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/11.jpg [Пересылка X11 в конфигурации PuTTY]

Наконец, выберите * SSH> Туннели *. Введите + 5900 + в поле * Source * port. В поле * Destination * укажите имя или IP-адрес вашего сервера, затем двоеточие и номер порта VNC для предполагаемого пользователя. В нашем случае мы указали +: 5905 +.

В качестве альтернативы вы можете использовать порт * 5902 *. * 2 * в этом случае будет номером дисплея для * janevnc * (запомните сообщение, отображаемое, когда * janevnc * запустил команду + vncserver +).

Нажмите кнопку * Добавить *, и сопоставление будет добавлено в * Переадресованные порты *. Здесь мы добавляем переадресацию портов для сеанса SSH; когда пользователь подключается к localhost через порт * 5900 *, соединение будет автоматически туннелироваться через SSH на порт удаленного сервера * 5905 *.

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/12.jpg [SSH-туннелирование в конфигурации PuTTY]

Вернитесь к элементам * Sessions * и сохраните сеанс для * janevnc *. Нажмите кнопку * Open *, и откроется новый сеанс терминала для * janevnc *. Войдите как * janevnc * с соответствующим паролем UNIX:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/13.jpg [терминальная сессия SSH для janevnc]

  • VNC Viewer *

Затем снова запустите VNC Viewer. На этот раз в адресе * VNC Server * введите <^> и позвольте серверу VNC выбрать метод шифрования:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/14.jpg [Подключение VNC Viewer к локальному узлу с переадресацией портов]

Нажмите кнопку * Connect *.

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

Принятие этого предупреждения покажет знакомую подсказку пароля. Введите пароль * janevnc * VNC для доступа к удаленному рабочему столу.

Так как вы узнали, что сеанс был зашифрован? Если подумать, мы установили переадресацию портов в сеансе SSH. Если сеанс SSH не был установлен, переадресация порта не работала бы. Фактически, если вы закроете окно терминала и выйдете из сеанса PuTTY, а затем попытаетесь соединиться только с VNC Viewer, попытка подключения к + localhost: 5900 + выдаст следующее сообщение об ошибке:

изображение: https: //assets.digitalocean.com/articles/Install_VNC_Gnome/15.jpg [Сообщение об ошибке VNC Viewer]

Итак, если соединение + localhost: 5900 + работает, вы можете быть уверены, что соединение зашифровано.

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

Заключение

Доступ к вашей системе CentOS Linux из графического интерфейса может значительно упростить администрирование системы. Вы можете подключиться из любой клиентской операционной системы и не должны зависеть от веб-панелей управления хостингом. VNC имеет гораздо меньшую площадь по сравнению с большинством панелей управления.

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

Если вы решите установить и запустить VNC на своем рабочем сервере Linux, мы настоятельно рекомендуем использовать его только для административных целей.

Related