Удалённое управление компьютером. Настройка UltraVnc

Как помочь своим пользователям получить доступ к многопользовательской Linux-системе из любого места

Архитектура VNC и X server

В качестве графического интерфейса пользователя (GUI) в Linux®применяется X Window System (сокращенно X ). X - это необычный GUI в нескольких отношениях, в частности, это изначально сетевой интерфейс. X-сервер , по сути, представляет собой программу сетевого сервера. Программы сетевого сервера предоставляют клиентским программам доступ к локальным ресурсам, и это верно также для X-сервера. Особенность заключается в том, что в случае Х-сервера "локальные ресурсы" – это дисплей, клавиатура и мышь, с которыми работает пользователь. В самой распространенной конфигурации программы Х-клиента работают на том же компьютере, что и сервер. Таким образом, LibreOffice, GNU Image Manipulation Program (GIMP) или другие программы являются X-клиентами, использующими сетевые протоколы Х для приема данных от пользователя и отображения результатов на том же компьютере.

Однако когда X используется в сети, пользователь сидит за компьютером X-сервера, а X-клиентами служат программы, которые нужно запускать на другом компьютере. Для этой конфигурации требуется второй сетевой протокол, устанавливающий соединение. Таким вторым протоколом может быть telnet, Secure Shell (SSH) или X Display Manager Control Protocol (XDMCP). Сервер этого протокола удаленного входа работает на компьютере X-клиента, а клиент удаленного входа ― на компьютере X-сервера. Сервер удаленного входа запускает X-клиенты, которые, в свою очередь, устанавливают соединение с X-сервером. иллюстрирует это взаимодействие. Пунктирными стрелками обозначено начало сеанса. (В случае XDMCP XDMCP-клиент встроен в программу X-сервера.)

Рисунок 1. Для удаленного доступа X требуется клиент и сервер на обоих компьютерах

Эта конфигурация прекрасно работает во многих локальных сетях, но не лишена недостатков. Например, для нее нужно инициировать двусторонний сетевой протокол, а этому может помешать межсетевой экран или маршрутизатор Network Address Translation (NAT). (SSH устраняет это препятствие, позволяя туннелировать X-сеансы.) Кроме того, хотя существуют X-серверы для большинства платформ, они обычно не устанавливаются на компьютерах под управлением Windows®. По этим и иным причинам многие предпочитают использовать другой протокол, Remote Frame Buffer (RFB), который реализован в семействе программ Virtual Network Computing (VNC).

VNC - это кроссплатформенный инструмент, который обеспечивает удаленный доступ к Linux, UNIX®, Mac OS X, Windows и другим системам из клиента любого типа. Пользователь сидит за клиентским компьютером и обращается к удаленному серверному компьютеру. В Linux VNC-сервер либо зеркально отражает содержимое локального экрана Х-сервера на удаленный компьютер, либо содержит свой собственный X-сервер, способный работать независимо от того, что управляет локальным экраном. Результат показан на рисунке 2. Опять же, пунктирная стрелка указывает начало сеанса. Эта конфигурация устраняет необходимость в обратном сетевом соединении, а так как клиенты и серверы VNC имеются для многих операционных систем, одна и та же клиентская программа обеспечивает доступ к любому серверу.

Рисунок 2. В состав VNC-сервера входит X-сервер, способный взаимодействовать с локальными программами через X-клиент

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

Для решения этой проблемы можно объединить эти два подхода: перенастроить локальный XDMCP-сервер так, чтобы он помогал X-серверу, встроенному в VNC, обеспечить недостающую многопользовательскую аутентификацию. (Результирующая конфигурация иллюстрируется на рисунке 3. Пунктирная стрелка указывает начало сеанса.) Теперь, когда удаленные пользователи VNC обращаются к компьютеру VNC-сервера, они могут вводить имена пользователей и пароли доступа к своим собственным уникальным сеансам VNC, так что с компьютером могут работать сколько угодно пользователей.

Рисунок 3. Добавление XDMCP к конфигурации VNC обеспечивает повышенную гибкость

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

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

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

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

Установка xinetd

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

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

# /etc/init.d/xinetd start

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

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

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

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

Настройка xinetd

Серверы, которыми должен управлять xinetd , помещают файлы конфигурации в каталог /etc/xinetd.d. Таким образом, чтобы настроить xinetd на управление 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 }

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

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

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

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

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

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

Большинство дистрибутивов Linux настраивают свои XDMCP-серверы только для управления локальным дисплеем. Чтобы обеспечить удаленный доступ, нужно перенастроить XDMCP-сервер так, чтобы принимать запросы на доступ с VNC-сервера, работающего на том же компьютере. Детали зависят от XDMCP-сервера. Три наиболее часто используемых в Linux ― это GNOME Display Manager (GDM), Light Display Manager (LightDM) и KDE Display Manager (KDM). Для других XDMCP-серверов, таких как XDM, требуются настройки, отличные от описанных здесь. В любом случае после перенастройки XDMCP-сервера его придется перезапустить.

Редактирование файла конфигурации XDMCP

Если вы не уверены, какой XDMCP-сервер используется в вашей системе, это можно определить, просмотрев листинг процесса с помощью строки dm , например:

$ ps ax | grep dm 929 ? Ss 0:00 /usr/bin/kdm 962 tty7 Ss+ 0:19 /usr/bin/Xorg -br:0 vt7 -nolisten tcp -auth \ /var/lib/xdm/authdir/authfiles/A:0-pp4shb 30157 pts/3 S+ 0:00 grep --color=auto dm

В первой строке этой распечатки указано, что работает KDM, поэтому для того чтобы VNC мог использовать XDMCP, нужно отредактировать файл конфигурации этого сервера. Файлы конфигурации большинства программ XDMCP имеют один и тот же формат. Они содержат разделы с именами, указанными в квадратных скобках, например . Строки, следующие за именем раздела, задают параметры через знак равенства, например: enable=true . В таблице 1 перечислены имена файлов конфигурации, имена разделов и параметры, которые необходимо определить, чтобы XDMCP работал на нескольких распространенных XDMCP-серверах Linux.

Таблица 1. Параметры, позволяющие XDMCP поддерживать VNC для разных XDMCP-серверов

Раздел XDMCP в файле конфигурации может полностью отсутствовать. Если он присутствует, он может явно отключать поддержку XMDCP, содержать закомментированные параметры или быть пустым. Независимо от исходного состояния файла необходимо сделать так, чтобы раздел XDMCP присутствовал и чтобы поддержка была включена. В качестве примера рассмотрим настройку KDM для включения XDMCP:

Enable=true

Некоторые дистрибутивы позволяют включить дополнительные меры безопасности, которые потребуется ослабить. Одна из них ― межсетевой экран. Сценарии межсетевых экранов обычно зависят от дистрибутивов, поэтому за инструкциями по настройке межсетевого экрана обращайтесь к документации на свою систему. Нужно, чтобы localhost имел доступ к порту 177, а VNC-клиенты - к порту 5900 (или любым другим портам, которые используются для VNC).

В OpenSUSE есть дополнительный файл конфигурации, который управляет некоторыми типами доступа, включая XDMCP-доступ: /etc/sysconfig/displaymanager. Откройте этот файл в текстовом редакторе и найдите следующую строку:

DISPLAYMANAGER_REMOTE_ACCESS="no"

Измените значение этого параметра на "yes" . Если оставить "no" , окно входа XDMCP-сервера при подключении к VNC-серверу отображаться не будет. В большинстве дистрибутивов такое изменение не требуется: этот файл использует только openSUSE.

Перезапуск XDMCP-сервера

Когда XDMCP-сервер настроен на поддержку удаленных соединений, его необходимо перезапустить. В дистрибутивах, которые запускают X посредством файла инициализации SysV, таких как Debian и Gentoo, это можно сделать с помощью параметра restart:

# /etc/init.d/gdm restart

В системе, которая для запуска X использует уровень runlevel, такой как Fedora или openSUSE, нужно перейти на уровень текстового режима (обычно 3), а затем вернуться на уровень GUI (обычно 5):

# telinit 3 # telinit 5

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

Тестирование и отладка

Теперь можно входить в систему с удаленного компьютера с помощью VNC-клиента. Большинство дистрибутивов Linux содержат команду vncviewer , так что можно ввести:

vncviewer

Чтобы войти в систему remotename через VNC. Если VNC настроена и работает правильно, результат будет примерно таким, как показано на рисунке 4. Если настроить несколько сеансов VNC через разные порты, можно указать номер сеанса VNC, передав его как часть имени хоста. Введите:

vncviewer:3

Чтобы войти в сеанс 3 (через порт 5903).

Рисунок 4. При настройке на работу с XDMCP VNC обеспечивает обычное приглашение Linux

Если при выполнении этого теста вы не видите экран входа в систему XDMCP, придется произвести отладку. Ниже приведены некоторые рекомендации.

  • Если vncviewer сообщает, что в соединении было отказано, это, скорее всего, означает, что суперсервер на компьютере сервера VNC не настроен должным образом. Проверьте конфигурацию xinetd и попробуйте перезапустить суперсервер. Возможно также, что межсетевой экран блокирует доступ к компьютеру VNC-сервера.
  • Если VNC-клиент запускается и подключается к серверу, но вы видите только серый экран с курсором, который можно перемещать, проблема, скорее всего, в настройке XDMCP-сервера. Проверьте описанные выше параметры и перезапустите XDMCP-сервер.
  • Просмотрите файлы журнала событий, как это обычно делается при отладке. Может потребоваться поиск всех файлов журнала в каталоге /var/log по ссылкам на ваши xinetd , XDMCP-сервер и VNC-сервер.

Вопросы безопасности VNC

RFB не является безопасным протоколом; большинство VNC-клиентов и серверов не шифруют свои данные. (VNC шифрует свои собственные пароли, но при описанном здесь подходе эти пароли не используются.) Будьте осторожны при выборе способа и места установки VNC. Если вы хотите использовать VNC в незащищенной сети, возможны три варианта:

  • использовать виртуальную частную сеть (VPN);
  • туннелировать протокол через SSH;
  • использовать вариант VNC, поддерживающий шифрование, такой как TigerVNC с возможностью шифрования Transport Layer Security.

При включении окон входа VNC, как описано в этой статье, во внешний мир открываются, по крайней мере, два порта (VNC и XDMCP). Оба порта можно ограничить правилами межсетевого экрана, чтобы свести к минимуму риск злоупотреблений. Заметим, что порт XDMCP (UDP 177) должен быть открыт только для localhost, поэтому правило межсетевого экрана для него может быть весьма ограничивающим.

Заключение

В целом соединение VNC и XDMCP ― полезный метод обеспечения удаленного входа с графическим интерфейсом пользователя для многопользовательских Linux компьютеров. Этот метод имеет преимущества по сравнению с прямым применением XDMCP в кроссплатформенной среде или при наличии проблем, вызванных межсетевым экраном или NAT. На многопользовательских компьютерах он предпочтительнее более распространенных способов прямого подключения VNC. При использовании этого метода необходимо рассмотреть вопросы безопасности. Будьте готовы настроить правила межсетевого экрана для ограничения нежелательного доступа извне и используйте шифрование, если данные передаются по ненадежной сети.

  • Tutorial

Это руководство о том, как настроить noVNC для удалённого доступа к компьютерам на Windows.

Почему noVNC?

- У Windows есть «родное» средство для удалённого доступа - Remote Desktop Connection. Но оно есть не во всех версиях Windows - например нет в Home edition.
- Также существует множество VNC серверов и клиентов для любой версии Windows. Но для их использования нужно ставить VNC клиент. А бывают случаи, когда ставить ничего нельзя (ограничение прав), или нежелательно, чтобы не оставлять следов на чужом компьютере.
- Ещё есть Chrome Remote Desktop, которому на стороне клиента нужно только расширение в браузере. Но у меня был случай, когда протокол Хрома был заблокирован организацией (там почто всё было заблокировано), а noVNC использует обычный HTTP и поэтому работал.

Насколько я знаю, noVNC - единственное средство, которое позволяет подключиться к удалённому компьютеру без установки какого-либо клиента - используется лишь браузер.
Ещё есть SPICE , но для него я не нашёл сервера под Windows.

В результате этого руководства, мы сможем просто открыть линк в браузере, ввести пароль и пользоваться удалённой системой.

Необходимым условием является проброс портов, или белый IP удалённого компьютера. Также можно воспользоваться VNC repeater. Но это уже выходит за рамки этой статьи.

Общая схема

Сначала мы поставим обычный VNC сервер на порт 5900.

Затем поставим noVNC и WebSockify на порт 5901.

Цель, чтобы получилось приблизительно вот так:


Теперь запускаем command prompt с администраторскими правами:


Запускаем WebSockify:

C:\> cd c:\noVNC\websockify c:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master WARNING: no "resource" module, daemonizing support disabled WebSocket server settings: - Listen on:5901 - Flash security policy server - Web server. Web root: c:\noVNC\noVNC-master - No SSL/TLS support (no cert file) - proxying from:5901 to 127.0.0.1:5900
Первый параметр выше - порт на котором noVNC будет слушать: 5901 . Этот порт нужно сделать доступным для клиентов.

Второй параметр - IP и порт, где стоит VNC сервер: 127.0.0.1:5900

Третий параметр --web инструктирует noVNC, чтобы он отдавал содержимое директории c:\noVNC\noVNC-master по HTTP(s). По умолчанию noVNC отдаёт только VNC вебсокет, но этот параметр позволяет иметь и HTTP сервер на этом же порту.

В директории c:\noVNC\noVNC-master переименуйте файл vnc.html в index.html , чтобы он отдавался по умолчанию.

Теперь noVNC клиент должен быть доступен на порту 5901:


Попробуйте также открыть noVNC страницу с другого компьютера/смартфона, чтобы удостовериться, что она доступна снаружи. Если нет - то проверьте:

Что у вас Windows Firewall не блокирует внешние подключения на этот порт,
- что ваш роутер правильно перенаправляет запросы на этот порт на нужный компьютер; если надо гуглите «проброс портов».

Соединяемся (Connect), вводим VNC пароль и видим рабочий стол удалённого компьютера!

Если что-то пошло не так, то ошибки должны показаться в нашей консоли.

Остановить noVNC сервер можно нажав Ctrl-C в консоли. Описанная выше конфигурация работает по HTTP (и по WS).

Добавляем SSL с самоподписанным сертификатом

Добавлять SSL - необязательно. Создать самоподписанный сертификат можно вот так:

Openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
Для Windows openssl можно взять .

В результате получаем файл self.pem, на который надо указать при старте noVNC:

C:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master --cert=c:\noVNC\self.pem
Теперь у нас работает HTTPS и WSS (WebSocket Secure). Для WSS в настройках (Settings) нужно указать Encrypt. Интересно, что noVNC использует один и тот же порт для HTTP и HTTPS - он «умеет» различать запросы и правильно отвечать.

Так как сертификат самоподписанный, то в браузере нужно будет принять этот сертификат.

Let"s Encrypt

У меня нет инструкций о том, как настроить систему, чтобы Let"s Encrypt автоматически генерировал сертификат специально для нашей системы. Для этого потребовалось бы, чтобы noVNC работал на порту 80, что конечно же возможно, но может быть неудобно, и найти способ интегрировать certbot, чтобы эти файлы публиковались в нужную директорию. Думаю, что это возможно, но я этого не сделал. Если вы допилите - поделитесь в комментариях.

В моём случае, у меня уже есть домашний сервачок с NGINX и DDNS именем, который настроен автоматически получать сертификат от Lets Encrypt.

Вы можете запустить что-то похожее у себя. есть инструкции о настройке Let"s Encrypt для Linux и Windows.

Поэтому для noVNC я просто использую уже существующие pem -файлы, сгенерированные для nginx .

Let"s Encrypt создаёт следующие файлы:

Cert.pem: Your domain"s certificate chain.pem: The Let"s Encrypt chain certificate fullchain.pem: cert.pem and chain.pem combined privkey.pem: Your certificate"s private key
На Ubuntu их можно найте по вот такому пути: /etc/letsencrypt/live/your_domain_name

Нужно скопировать (объединить) fullchain.pem и privkey.pem в один файл, например назовём его encrypt.pem , и этот файл мы будем использовать для noVNC .

Конечно, работать это будет только если nginx сервер и noVNC - на одном домене. Порты могут быть разными.

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

Добавляем noVNC, как Windows-сервис

Загружаем zip-архив , и распаковываем файлы оттуда так, чтобы они лежали в той же папке, где и файл websockify.exe , то есть в нашем случае в c:\noVNC\websockify .

При запуске, сервис будет использовать параметры из файла noVNCConfig.ini . Вот пример моего конфига:

5901 127.0.0.1:5900 --web C:\noVNC\noVNC-master --cert=c:\noVNC\encrypt.pem
В консоли, запущенной с администраторскими привилегиями создаём новый сервис:

Sc create "noVNC Websocket Server" binPath= "c:\noVNC\websockify\noVNC Websocket Service.exe" DisplayName= "noVNC Websocket Server"
Если нужно будет удалить сервис, то вот так:

Sc delete "noVNC Websocket Server"
Открываем сервисы (Control Panel → Administrative Tools → Services) и запускаем noVNC Websocket Server. Также здесь можно настроить, чтобы сервис стартовал каждый раз вместе с Windows:

Известные недоработки

Раскладка клавиатуры

Я обнаружил, что русская раскладка клавиатуры работает довольно необычным образом:
Если у клиента выбран русский язык, то на удалённый компьютер нажатия клавиш не передаются вообще.remote desktop Добавить метки

Несмотря на то, что Raspberry Pi прекрасно работает с монитором или телевизором с помощью кабеля HDMI, часто возникают ситуации, когда монитор не нужен и вполне достаточно видеть рабочий стол удаленно с другого комьютера. В этом случае нам поможет VNC. К слову, удаленно можно решить большинство задач, таких как программирование или настройка операционной системы.
Что нам понадобится?

Предполагается, что на Raspberry Pi установлена операционная система (специальная версия Linux дистрибутива Debian), а на удаленном компьютере установлена Windows 7. Для этого необходимо установить какой либо клиент VNC для Windows, например UltraVNC — она достаточно удобная и бесплатная.
Страница загрузки UltraVNC

Когда VNC сервер будет настроен и запущен, то клиента UltraVNC будет достаточно для того, чтобы удаленно подключиться к Raspberry Pi. Однако, если мы будем настраивать VNC также в удаленном режиме, то дополнительно понадобится клиент SSH — бесплатная программа PuTTY.
Страница загрузки PuTTY

Последнее, что нам нужно, это IP адрес вашего Raspberry Pi. Если ему присвоен статический адрес, то этого достаточно. Если вы знаете, как посмотреть IP адрес на вашем маршрутизаторе, то этого также будет достаточно. Если же адрес не известен и посмотреть его нет возможности, то понадобится программа для сканирования IP адресов в сети. Для этого вполне подойдет Advanced IP Scanner, он просканирует локальную сеть и покажет список всех устройств с указанием IP адреса каждого. Чаще всего определить адрес Raspberry Pi не сложно, в списке он имеет имя «raspberrypi» или подобное.
Страница загрузки Advanced IP Scanner

В случае с маршрутизатором, чаще всего достаточно просмотреть список подключенных устройств, Raspberry Pi можно определить таким же способом, как описано выше. К сожалению, описать как это сделать подробнее в рамках этой статьи не представляется возможным — все маршрутизаторы немного отличаются друг от друга.

Запускаем SSH на Raspberry Pi

Начнем с того, что такое SSH. Это программа, которая может быть запущена в операционной системе Linux и позволяет получить удаленный доступ к консоли (командной строке) Raspberry Pi. С ее помощью можно запустить любую программу или выполнить команду в командной строке удаленно, при помощи клиента SSH — PuTTY.

По умолчанию в Raspbian сервер SSH отключен, поэтому сначала его нужно будет запустить. Для этого придется подключить Raspberry Pi к монитору или телевизору и подключить к нему USB клавиатуру. Есть два способа запустить сервер SSH. Более простой заключается в использовании программы raspi-config. Для этого необходимо набрать команду и выбрать пункт «ssh Enable or disable ssh server » в предложенном меню:

Другой способ, это ввести команду sudo /etc/init.d/ssh start , как показано ниже:

Разница в том, что в первом способе, с помощью программы raspi-config мы не только запускаем SSH сервер, но и добавляем его в автозапуск операционной системы, что может быть не очень хорошо, если SSH сервер не нужен постоянно. Во втором случае, мы запускаем его только до следующей перезагрузки.

Наконец, опишем способ запустить сервер SSH без использования монитора и клавиатуры. Для этого необходимо вынуть SD карту с установленной Rasbian, вставить ее в картридер и подключить к компьютеру под управлением Windows.
SD карта Raspberry Pi имеет небольшой раздел, отформатированный в системе Fat32, понятной Windows. На этом разделе содержатся некоторые конфигурационные файлы. Содержимое SD карты выглядит так:

Для того, чтобы обеспечить запуск сервера SSH нужно переименовать файл boot_enable_ssh.rc в boot.rc:

Теперь достаточно вставить SD карту обратно в Raspberry Pi и включить его. Сервер SSH будет запущен!

Подключаемся через SSH

Как было сказано выше, для того чтобы подключиться к Raspberry Pi удаленно с использованием VNC необходимо сначала запустить сервер VNC. Ниже показано, как выполнить эту процедуру так же в удаленном режиме. Для этого понадобится клиент SSH — PuTTY. После загрузки программы PuTTY, достаточно просто запустить полученный файл, установка не требуется. Откроется такое окно:

В поле Host Name вводится IP адрес, найденный в начале. Затем нажимаем кнопку Open. Как только PuTTY подключится к SSH серверу, откроется окно терминала и появится запрос учетных данных (пользователь pi с паролем raspberry по умолчанию):

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

Настройка VNC сервера через SSH

Теперь, когда соединение установлено, необходимо запустить VNC сервер. Если сервер запускается впервые, то вероятнее всего, нужно сначала выполнить установку. Предполагается, что Raspberry Pi имеет выход в интернет, поскольку он понадобится для установки сервера VNC. Для этого, выполните команду:
sudo apt-get install tightvncserver
Как было сказано выше, PuTTY выполняет введенные команды непосредственно на Raspberry Pi, поэтому введенная выше команда установит VNC сервер на ваш компьютер.
Обратите внимание: во время установки будет задан вопрос об установке программы без проверки подлинности (Install these packages without verification ?). Понадобится ответить «y» на этот вопрос.

После окончания установки VNC сервер нужно запустить. Для этого используйте команду vncserver:1 -geometry 1280×800 -depth 16 -pixelformat rgb565

Эта команда запустила VNC сервер! В данном случае, это означает, что запущена виртуальная X-сессия (виртуальное представление рабочего стола Raspberry Pi), абсолютно аналогично тому, как по команде startx при загрузке при подключенном мониторе. Теперь, когда вы запустите клиент VNC и подключитесь, то будете подключены именно к этому виртуальному рабочему столу.

Наиболее важная часть этой команды- параметр :1 . Он определяет номер порта на котором будет запущен процесс VNC. Номер порта может быть любым, но нужно запомнить его, он понадобится при подключении. Еще один важный параметр, это разрешение (в данном случае размер) виртуального рабочего стола. Его можно указать любым, однако не стоит указывать больше, чем реальное разрешение компьютера, с которого осуществляется удаленный доступ.

При первом запуске VNC сервер попросит ввести пароль. Этот пароль нужен будет при подключении к удаленному рабочему столу.

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

Подключаемся с помощью UltraVNC

После запуска VNC сервера, последнее что остается сделать, это подключиться к нему удаленно. Запустите UtlraVNC, введите IP адрес, номер порта (1) и нажмите кнопку Connect.
И вот — все готово!

Важное замечание! Изображение удаленного стола может отличаться, в зависимости от того, под какими учетными данными был запущен vncserver. При запуске под учетными данными рядового пользователя, т.е. как указано выше, рабочий стол будет выглядеть как обычно. С другой стороны, при запуске vncserver под учетной записью суперпользователя при помощи команды sudo рабочий стол будет выглядеть так, как на изображении ниже. Кстати, тоже самое касается команды startx при работе с Raspberry Pi непосредственно (локально).

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования - инструменты Linuxconf, Webmin и SWAT.

Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.

Отзывы о книге

Сетевые средства Linux

Появилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.

Александр Стенцин, Help Net Security,

www.net-security.org

Если вы стремитесь в полной мере использовать сетевые возможности Linux - эта книга для вас. Я настоятельно рекомендую прочитать ее.

Майкл Дж. Джордан, Linux Online

Выхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.

Роджер Бертон, West, DiverseBooks.com

Книга:

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

Разделы на этой странице:

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

VNC представляет собой удобный инструмент удаленного доступа, но при использовании могут возникать проблемы. В частности, многие пользователи сообщают об ошибках, возникающих при совместной работе редактора NEdit (http://www.nedit.org) и VNC. В моей системе NEdit не реагировал на нажатие клавиш, т.е. оказался совершенно непригоден к использованию. К счастью, серьезные ошибки, подобные этой, возникают достаточно редко. В большинстве случаев проблему удается решить с помощью настройки компонентов VNC. Xарактеристики VNC можно задавать, редактируя сценарий, используемый для запуска сервера, либо изменяя содержимое конфигурационных файлов.

Установка основных характеристик сервера

Программа, реализующая функции сервера VNC, называется Xvnc. Эта программа содержит X-сервер (взаимодействующий с локальными X-программами) и сервер VNC (который взаимодействует с клиентом VNC). Вы, вероятно, заметили, что при обсуждении работы сервера программа Xvnc не упоминалась. Дело в том, что эта программа вызывается из сценария vncserver , используемого для запуска сервера VNC. Сценарий vncserver написан на языке Perl; изменяя его код, вы можете задавать характеристики сервера VNC, принимаемые по умолчанию. Некоторые из установок, которые можно осуществить, редактируя код сценария, описаны ниже.

Автоматическая установка параметров, используемых по умолчанию . В последних версиях vncserver для определения размера дисплея, числа битов, используемых для представления цвета, и других параметров применялся вызов &GetXDisplayDefaults() . Однако при этом может быть получено значение размера, не подходящее для клиента. Если вы хотите изменить размер экрана, вам надо закомментировать данную строку, поместив в начале ее символ # , и указать размер экрана явным образом. В сценарии, поставляемом в составе пакета, размер экрана устанавливается до вызова &GetXDisplayDefaults() .

Размер экрана . При запуске программа Xvnc создает виртуальный экран определенного размера. Если вы не используете опции по умолчанию, установите размер экрана с помощью переменной $geometry . Например, чтобы задать размер 900?675, надо включить в состав сценария следующую строку:

$geometry = "900x675";

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

Глубина цвета . Включив в состав сценария переменную $depth , вы можете контролировать число битов, используемых для представления цвета. Во многих случаях для кодирования цвета бывает достаточно 16 битов, однако программы, воспроизводящие большое количество разнообразных цветов, могут искажать данные, отображаемые другими программами. Это правило не распространяется на VNC; 16-битовое представление может привести к некорректному отображению цвета. В будущем данная проблема, скорее всего, будет решена.

Шрифт, или путь к шрифту . Сценарий, поставляемый в составе пакета, по умолчанию настроен для использования сервера шрифтов. Изменить эту настройку можно с помощью раздела Add font path and color database stuff here . Для добавления шрифта используется параметр -fp в строке $cmd , которая используется при вызове Xvnc . При необходимости вы можете сконфигурировать VNC для работы с сервером шрифтов. Использованием сервера шрифтов описано в главе 15.

Диспетчер окон, используемый по умолчанию . Сценарий vncserver , поставляемый в составе дистрибутивного пакета, содержит переменную $defaultXStartup , определяющую содержимое пользовательского сценария запуска. При первом запуске сценарий vncserver помещает соответствующий файл в пользовательский каталог. По умолчанию задан диспетчер окон который в настоящее время используется достаточно редко. Вы можете отказаться от значения, заданного по умолчанию, и заменить вызов twm на вызов другого диспетчера окон или среды рабочего стола, например startkde , sawmill или icewm . Изменения, внесенные в сценарий vncserver , повлияют на работу только тех пользователей, которые еще не запускали данный сценарий. Ниже будет рассмотрены средства установки конфигурации для существующих пользователей.

Даже если вы плохо знакомы с языком Perl, просмотрев данный сценарий, вы найдете сведения о многих характеристиках, которые, возможно, захотите изменить. В основном данный сценарий устанавливает опции, которые должны быть указаны при запуске Xvnc ; они помещаются в строку $cmd . Разобравшись в том, как формируются опции, вы сможете легко модифицировать их. По команде Xvnc -help &> Xvnc-help.txt создается текстовый файл с именем Xvnc-help.txt , содержащий информацию о доступных опциях Xvnc .

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

Сценарии vncserver , входящие в состав некоторых пакетов, существенно отличаются от исходного варианта. Особенно это относится к сценарию, поставляемому в составе системы Debian. Тем не менее советы, приведенные выше, применимы ко всем разновидностям vncserver . Необходимо лишь перед внесением изменений ознакомиться с конкретными особенностями сценария. Например, сценарий для системы Debian создает для определения шрифта переменную $fontpath .

Изменение параметров для отдельных пользователей

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

Самостоятельно создать сценарий запуска сервера VNC . Пользователь может скопировать сценарий в свой каталог, модифицировать его и использовать в дальнейшем для запуска сервера.

Организовать передачу опций сценарию . Сценарий vncserver обрабатывает несколько опций, которые могут быть использованы для переопределения значений, заданных по умолчанию. Например, опция -geometry ширина_и_высота устанавливает размер рабочего стола. Эти опции в основном совпадают с опциями программы Xvnc .

Редактировать отдельные конфигурационные файлы . Стандартный сценарий запуска сервера перед окончанием своего выполнения вызывает сценарий ~/.vnc/xstartup . В нем содержатся команды запуска диспетчера окон и xterm . Пользователь может редактировать этот файл так же, как и обычный сценарий запуска X Window. В некоторых дистрибутивных пакетах имя и расположение этого сценария отличается от указанных здесь. Например, в системе Debian вызывается сценарий /etc/X11/Xsession , который, в свою очередь, запускает пользовательский сценарий.xsession .

В большинстве случаев для организации передачи опций и редактирования конфигурационных файлов приходится затрачивать гораздо меньше усилий, чем для создания сценария запуска. Однако бывают ситуации, когда один из способов настройки оказывается намного удобнее остальных. Например, размер экрана проще всего задавать с помощью опции -geometry в сценарии vncserver , а диспетчер окон лучше всего настраивать, используя его сценарий запуска. Общее правило таково: содержимое сценария vncserver позволяет задать поведение X-сервера в составе VNC, а опции сценария запуска дают возможность настроить диспетчер окон и среду рабочего стола.

Совместная работа серверов XDMCP и VNC

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

Подобно большинству X-серверов, VNC X-сервер позволяет серверу XDMCP управлять отображением данных. Для того, чтобы это стало возможным, вам надо указать при запуске VNC X-сервера опцию -query имя_узла . Если вы используете суперсервер xinetd , соответствующая запись в конфигурационном файле будет выглядеть следующим образом:

service vnc
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/local/bin/Xvnc
server_args = -inetd -query vncserv -once
}

В данном случае важно правильно задать параметры сервера. В частности, опция -inetd сообщает Xvnc о том, что он запущен посредством суперсервера, -query vncserv означает, что необходимо обратиться к vncserv . Опция -once свидетельствует о том, что сервер должен быть вызван однократно, а затем прекратить свою работу; в результате, если пользователь завершит сеанс взаимодействия, соединение будет разорвано. Вы можете также использовать и другие опции Xvnc , например -geometry или -fp . Кроме того, в файле /etc/services должно присутствовать описание порта.

Для обычных соединений VNC использует номера портов 5900-5999, а порты 5800-5899 применяются для обработки обращений посредством Web-броузера (поддержки режима Java-сервера). Порт 5900 соответствует дисплею 0, порт 5901 - дисплею 1 и т.д. Таким образом, приведенное выше описание задает отображение приглашения к регистрации XDMCP и взаимодействие VNC через порт 0. Очевидно, что сервер XDMCP должен выполняться на компьютере, определенном посредством опции -query . Вы можете настроить систему так, чтобы она по-разному реагировала на обращения клиента через различные порты. Например, дисплею 0 может соответствовать размер рабочего стола 800?600, дисплею 1 - размер 1024?768 и т.д. Для идентификации таких серверов необходимо поместить в файл /etc/services несколько записей: по одной на каждый порт. Настроенный таким образом сервер VNC не требует ввода пароля - все детали взаимодействия обеспечивает сервер XDMCP. (Заметьте, что в отличие от традиционного VNC-взаимодействия, имя пользователя и пароль передаются в незакодированном виде.) Еще одна особенность сконфигурированного подобным образом сервера VNC состоит в том, что он может принимать обращения нескольких пользователей через один порт. Таким образом, совместное использование серверов VNC и XDMCP можно условно сравнить с применением сервера XDMCP и удаленного X-сервера. Однако эти системы имеют ряд отличий. Наиболее важные из них описаны ниже.

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

При работе VNC на пользовательском компьютере вместо X-сервера выполняется клиент VNC. Сервер VNC распространяется в исходных кодах, поэтому он свободно доступен, в то время как большинство X-серверов для Windows и MacOS предоставляется на коммерческой основе.

Протокол VNC имеет свои особенности. Если на пользовательском компьютере вы замените X-сервер клиентом VNC, качество системы может как повыситься, так и снизиться, в зависимости от потребностей пользователя и применяемого X-сервера.

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

Удалённо управлять компьютером – звучит интригующе, но только для тех, кто раньше с этим не сталкивался. На самом деле этот сервис появился уже давно и широко используется профессионалами. Многие разработчики различных программ изначально внедряют такую возможность в свои продукты, чтобы была возможность быстро помочь клиентам справиться с неполадками или настройками программного обеспечения. При наличии высокоскоростного интернета это происходит очень просто и быстро. Однако иногда возникает потребность помочь знакомым, друзьям или родственникам, особенно если это люди старшего поколения, впервые взявшие мышку в руку. Так же время от времени нужно срочно попасть на свой домашний компьютер, например, когда забыл скачать на флешку важную презентацию, или, находясь в другом городе, хочется показать подруге свои фотографии из последней поездки на Урал.

UltraVnc – это ещё одна программа для удалённого управления компьютером.
Достоинства: бесплатная и поддерживает как Windows, так и unixOS (напримерLinux).
Недостатки: куча пугающих настроек на английском языке.

Итак, глаза боятся, а руки делают. Скачиваем свежую версию с официального сайта www.uvnc.com или скачать . Запускаем. Выбираем server (сервер) и viewer (просмотрщик). Сервер ставится на тех компьютерах, к которым будем подключаться, а просмотрщик на тех, с которых будем подключаться.

«Установить сервис » и «Позволить использовать Ctrl+Alt+Del ». Да.

Поле «Incoming Connections » — «Входящие соединения».

Accept Socket Connections - включаем (т.е. нетрогаем).

Display - показывает номер порта (теоретически). Не трогаем.

Ports – пусть остаётся авто.

Enable JavaViewer (HTTP connect) - разрешить java-просмотрщик (через браузер). Да.

Allow Loopback Connections - разрешить соединение через «петлю» (как бы сам не себя для теста). Оставляем.

Loopback Only - только «петля» — больше ничего работать не будет. Нет.

Поле «Authentication » — «Аутентификация» (подтверждение личности/прав).

VNC Password - пароль на управление (на англ.).

View-Only Password – пароль только для просмотра (на англ.). Неплохо бы выставить его отличным от VNC.

Require MS Logon — применяет учётные записи windows. Галочку не ставим.

Поле «File Transfer » — «Передача файлов».Да, пригодится.

Поле «DSM Plugin » — шифрование данных. Как хотите, я не ставлю.

Поле «When last client disconnects » — «Когда последний клиент отключен».

— Ничего не делать. Выбираем .
— Заблокировать комп.
— Завершить сеанс.

Поле «Keyboard&Mouse » — «Клавиатура и мышь». Я ничего не выставляю.
— Отключает мышь и клаву того, кто подключается.
— Отключает мышь и клаву того, к кому подключаются.
— Японская клава.

Поле «Query on incoming connection » — «Запрос о входящем соединении».
Спрашивает у пользователя, разрешает ли он подключение к нему.
Display Query Window — время показа сообщения. Если пользователь ничего не нажал:
Refuse – отказ подключения.
Accept – резрешение подключения.

Поле «Multi Viewer Connections » — «Одновременное подключение нескольких клиентов».
— «Disconnect all existing connections » — отключение последнего после подключения нового. Оставляем.
— «Keep existing connections » — удерживать все подключения.
— «Refuse the new connection » — пункт означает, что идёт запрет на новое подключение, хотя на практике никакого запрета нет.
— «Refuse all new connections » — не позволять новых подключений, если одно уже есть.

Поле «Misc. » - тут всякие полезности для удобства, ускорения работы, уменьшения трафика.
Remove Aero (Vista) - отключить Aero (3D, прозрачность и прочие «украшения»). Отмечаем.
Remove Wallpaperfor Viewers - убирает обои с рабочего стола. Ставим галочку.
EnableBlank Monitoron Viewer Request - отключение монитора управляемого компа. Данная опция работает со сбоями, поэтому я снимаю галочку.
Disable Only Inputson Blanking Request - запрещает только ввод с консоли сервера, при этом экран не закрывается.
Enable Alpha-Blending Monitor Blanking - другой вариант отключения монитора сервера. Используйте, если с первым вариантом проблемы.
Capture Alpha-Blending - возможность видеть включенное видео. Работает со сбоями, но очень полезная функция, когда нужно просмотреть видеокамеры, например. Отмечаем.
Disable Tray icon - отключает иконку в трее. Отмечаем.
Forbid the user to close down WinVNC - запрещает отключать сервер. Ставим галочку.
Default Server Screen Scale - масштаб экрана при подключении. Оставляем 1/1.

Поле «Logging » — «Создание log-файла»
Log debug infos to the WinVNC.log file - пишет лог сервера. Не нужно.

Настройки выставлены, кликаем Apply и ОК.

На рабочем столе появляются три иконки: просмотрщик (Ultra VNC Viewer), сервер (Ultra VNC Server) и настройки (Ultra VNC Settings).
Открываем «Настройки» (Settings) и можем их здесь изменить. Но есть одна новая настройка «ScreenCapture » — захват экрана. Позволяет делать скриншоты рабочего стола.

Поле «Capture Options » — «Опции захвата». — Poll Full Screen – весь экран.
Poll Foreground Window – активное окно.
Poll Console Windows Only – только окно консоли.
Poll On Event Only –только окно события.
Poll Window Under Cursor – окно под курсором.
LowAccuracy (низкая точность) — дает прибавку в скорости за счет снижения точности.

Поле «Advanced » — «Расширенные».
Use System HookDll - опция имеет смысл на Windows 9x.
Video Hook Driver - использовать драйвер захвата видео. Обеспечивает наилучшее быстродействие на Windows XP, Vista, 7.
Show Primary Display — показывать первый экран.
Show Secondary Display – показать второй экран.
Capture Alpha-Blending – захват изображения видео.
Remote Aer While connected – отключить Aero, когда подключено соединение.
Remote Wall paper While connected – отключить обои рабочего стола, когда подключено соединение.

Двойной клик по значку «сервера» (Ultra VNC Server) запускает сервер, если он ещё не запущен.
Теперь запускаем «просмотрщик» (Ultra VNC Viewer).

Поле «Quick Options » настраивается скорость подключения.
Оставляем авто. Так же есть настройки:
View Only – только просмотр. Только при подглядывании.
Auto Scaling – нет полос прокрутки, при движении мышки вниз экран движется сам. Ставим .
Confirm Exit — подтверждать выход. Не нужно .

В общем больше нам ничего не нужно, поэтому вводим IP-адрес компьютера (как узнать IP-адрес своего компьютера смотрите ), на котором стоит уже настроенный сервер (UltraVNCServer) и жмём «Connect ». После запроса пароля попадаем на нужный нам компьютер.

(Visited 28 161 times, 7 visits today)

Статьи по теме: