Вступление
-
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, мы настоятельно рекомендуем использовать его только для административных целей.