Нажмите "Enter", чтобы перейти к содержанию

Удаленный доступ через браузер – Удаленное управление компьютером через браузер / Habr

Содержание

Удаленное управление компьютером через браузер / Habr

Около полугода назад задумал сделать программу для управления компьютером через браузер. Начал с простого односокетного HTTP сервера, который передавал картинки в браузер и получал координаты курсора для управления.

На определенной стадии понял что для этих целей хорошо подходит технология WebRTC. Такое решение есть у Chrome браузера, оно устанавливается через расширение. Но хотелось сделать маловесную программу, которая будет работать без установки.

Сначала попробовал использовать библиотеку которую предоставляет Google, но после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB. Друг помог с интерфейсом на JS, вот что в итоге получилось.

Запускаем программу:


Открываем ссылку во вкладке браузера и получаем полный доступ к рабочем столу:
Небольшая анимация процесса установки соединения:
Поддерживается Chrome, Firefox, Sаfari, Opera.

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

В ходе работы над программой пришлось изучить с десяток RFC и понять, что в интернете не достаточно информации о работе WebRTC протокола. Хочу написать статью по технологиям которые в нем используются, хочется узнать какие вопросы из нижеперечисленных интересуют сообщество:

  • SDP протокол описания потоковых данных
  • ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
  • DTLS соединение и передача ключей в RTP сессию
  • RTP и RTСP протоколы с шифрованиям для передачи медиа данных
  • Передача h364, VP8 и Opus по RTP
  • SCTP соединение для передачи бинарных данных

habr.com

ThinVNC — доступ к удаленному компьютеру через браузер без сторонних утилит

Когда речь заходит о том, чтобы получить удаленный доступ к другому компьютеру, на память сразу приходят традиционные коммерческий RAdmin, бесплатные UltraVNC, а также популярный в последнее время TeamViewer (бесплатный для использования дома, что, впрочем, не мешает некоторым компаниями невозбранно им пользоваться в "коммерческих" условиях и целях, ну да ладно). Эти программы можно назвать уже ветеранами своего дела, и их модель организации удаленного доступа примерно одинакова: на удаленном компьютере стоит сервер, на вашем запускается клиент. Программа 

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

Вместо клиентской части ThinVNC предполагает использование браузера с поддержкой HTML5. Поддержка HTML5 в настоящее время существует во всех современных браузерах, начиная от Opera и заканчивая Internet Explorer 9. Нижеследующий скриншот демонстрирует доступ к компьютеру с Windows XP из Internet Explorer 9 в Windows 7.

А это – в Opera:

Установка ThinVNC не сложнее установки любой другой программы и не обременяет пользователя обилием опций или вопросов. После установки по умолчанию программа прослушивает порт 8081, который и используется для доступа по протоколу https посредством вашего любимого браузера.

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

Рассмотрим некоторые из них.
На вкладке General есть флажок Use Video Driver – по замыслу разработчиков опция должна ускорять работу удаленного экрана в браузере, но на деле у меня получилось вот так:

Если у вас удаленный рабочий стол выглядит также – уберите этот флажок.

На вкладке Communications вы можете сменить протокол HTTPS на обычный HTTP и изменить порт, на котором будет "висеть" ThinVNC.

И, наконец, на вкладке Security вы можете включить/отключить требование ввести пароль на подключение к удаленному компьютеру.

ThinVNC поддерживает http-авторизацию и NTLM-авторизацию. По умолчанию используется http-авторизация с имя/пароль - admin/admin соотвественно.

Подключение к удаленному компьютеру через браузер

Для того, чтобы подключиться к удаленному компьютеру с запущенным сервером ThinVNC, в адресной строке следует ввести следующее:
[code]https://IP-адрес:8081[/code]
Примечание. IP-адрес компьютера можно легко узнать, открыв окно командной строки и введя команду ipconfig.

В моём случае адрес подключения выглядит так:
[code]https://192.168.194.133:8081/[/code]
Если используется Internet Explorer , то он может пожаловаться на непроверенный SSL сертификат.

Нажмите "Всё равно продолжить", и введите имя пользователя и пароль (admin/admin).

Мы почти на месте. Укажите, использовать ли полноцветный режим экрана, под какое разрешение подогнать размер удаленного окна (под текущее или под разрешение удаленного компьютера), и захватывать ли указатель мыши.

Впрочем, всё это можно изменить и в процессе работы.

На этом всё. ThinVNC использует всю мощь современной технологии HTML5, время отклика удаленного экрана вполне приемлемое. Однако, отмечу, что в Internet Explorer удаленный рабочий стол перерисовывался ощутимо медленнее, нежели, например, в Chrome и Opera.

В верхней части удаленного экрана находятся управляющие кнопки, позволяющие (слева направо):

  • включить или выключить захват указателя мыши;
  • приостановить удаленный сеанс;
  • обновить удаленный экран;
  • вписать удаленный экран в размер открытого окна браузера;
  • переключить удаленный рабочий стол в режим 256 цветов;
  • послать сочетания клавиш CTRL+ALT+DEL, CTRL+ESC, а также автоматически использовать текущую раскладку удаленного окна, а не локального компьютера.
  • запустить передачу файлов;
  • завершить сеанс удаленной работы.

ThinVNC существует в платной и бесплатной (ThinVNC Pro) версиях. В бесплатной версии отсутствует передача файлов, нет поддержки удаленной печати, и нет возможности записывать происходящее на удаленном экране. Первые 30 дней всё это имеется и в бесплатной версии, затем отключается. Цена лицензии варьируется от $20.00 до $10.24 в зависимости от количества приобретаемых лицензий. Домашний и нетребовательный пользователь вполне обойдётся без удаленной печати и записи роликов, а вот отсуствие передачи файлов - явно минус, для устранения которого придется воспользоваться файлообменником или какой-то другой утилитой.

Главный плюс ThinVNC – это работа через "чистый" браузер, без установки дополнительных плагинов, надстроек или какого-либо ещё программного обеспечения. Просто браузер, работающий по традиционным HTTP/HTTPS протоколам. Неплохая демонстрация возможностей технологии HTML5/WebSocket.

Домашняя страница ThinVNC


А какими средствами для организации удаленного доступа обычно пользуетесь вы? И готовы ли вы от них отказаться в пользу прозрачного доступа через веб-браузер?

winreview.ru

Windows в браузере без регистрации и СМС — обзор RDP-клиентов HTML5 / Сервер Молл corporate blog / Habr

Когда-то давно, когда деревья были высокими, а я был молодым и зеленым системным администратором, довелось мне внедрять терминальный сервер на Windows 2000. Я тогда думал, что хорошо бы, если бы для подключения к серверу не нужен был никакой отдельный клиент. Шло время, деревья выросли, олени на свитере отпустили рога, а я — бороду, на рынке начали появляться решения для работы в терминале через браузер. Но они были или нестабильные, или дорогие, и пробные внедрения ушли в долгий ящик.

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

Итак, хотите пускать сотрудников на терминалки через браузер или админить серваки через него же? Добро пожаловать под кат.

Удобство подключения без отдельного клиента сложно переоценить — браузер есть практически на любом пользовательском устройстве. Помимо удобства пользователей есть и аспект безопасности: поскольку такой клиент является веб-сервисом, защищать его гораздо проще. Действительно, классический RDP с интересными уязвимостями высовывать наружу просто так довольно опасно, работать через VPN не всегда удобно, а сервисы fail2ban и нестандартный порт хоть и помогают, но 100% защиты не дают. В то время как веб-сервис можно защитить авторизацией по сертификату и другими методами двухфакторной аутентификации.


Есть мнение, что использование RDS-Gateway с заворачиванием RDP-трафика через HTTPS и установка сертификатов на клиентах является хорошей защитой. На самом деле это не так — установка сертификатов для RDS-Gateway нужна для проверки подлинности не клиента, а сервера. Убедиться в этом можно, попробовав подключиться сторонними RDP-клиентами. Конечно, часть ботов, ищущих открытый RDP, такой способ отсеет. Но решения fail2ban в таком случае тоже необходимы.

Оставлю настройку безопасности за рамками этой статьи и перейду к конкретным примерам реализации. Тестировать будем на терминальном сервере на базе Windows Server 2019, в качестве приложения для проверки RemoteApp будем использовать 1С 7.7. Потому что можем.

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


Установка и настройка клиента подробно описана в документации, приведу основные шаги под спойлером.


Установка клиента от MS.

Подготовка. Ролям шлюза удаленных рабочих столов и\или посреднику подключений должен быть назначен такой сертификат, которому бы доверяли клиенты. Да, примерно как при обычной работе RDP-клиента через https. Можно завести публичный доверенный сертификат, можно использовать внутреннюю CA, в целях тестирования можно использовать и самоподписанный.

Сначала может понадобиться обновить модуль PowerShellGet.

Это делается командой:

Install-Module -Name PowerShellGet -Force

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

Install-Module -Name RDWebClientManagement

Install-RDWebClientPackage

В процессе может быть загружен Nuget для установки модулей из репозитория, сервер должен быть подключен к интернету. Да, Windows уже взрослая и умеет в репозитории.

Теперь нужно настроить сертификат для этого клиента. Делается это командой:

Import-RDWebClientBrokerCert cert.cer

Где cert.cer — путь к сертификату посредника удаленных рабочих столов в формате cer.

Теперь можно опубликовать клиента командой:

Publish-RDWebClientPackage -Type Production -Latest

После установки клиент становится доступен по ссылке вида:


https://trm.contoso.com/RDWeb/webclient/index.html

После успешного логина видны все опубликованные в коллекции приложения RemoteApp.

Опубликованные приложения в браузере.

Попробуем запустить 1С, подключившись Firefox с Kubuntu.

Kubuntu, Firefox, 1C 7.7.

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

1С, Paint и WordPad.

В целом все выглядит приятно и удобно, полноценный рабочий стол тоже поддерживается. Печать работает в виде отправки на виртуальный принтер PDF с последующей загрузкой файла браузером. Буфер обмена для текста тоже работает, хотя немного раздражает необходимость подтверждать доступ браузера к буферу обмена.

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

А вот чего пока нет, так это трансфера файлов с сервера и на сервер, и это существенная ложка дегтя. Подведем итог.

Плюсы:


  • Относительно простая настройка.
  • Установка на Windows-сервере, можно прямо на шлюзе рабочих столов.
  • Прозрачная и удобная работа RemoteApp.
  • Поддержка печати и буфера обмена для текста.

Минусы:


  • Необходимо разбираться с сертификатами.
  • Отсутствие поддержки файлового обмена.

Что ж, посмотрим, что нам предложит мир opensource.


Пожалуй, одно из самых известных решений. Но версия 1.0 появилась относительно недавно. К ее минусам можно сразу отнести отсутствие официальной поддержки Windows в качестве точки установки — нужна отдельная linux-машина или образ Docker. Документация доступна, как обычно, на официальном сайте. Стоит отметить, что помимо RDP, решение поддерживает доступ через браузер к серверам ssh, telnet и vnc.


Если вам не хочется собирать свежую версию из исходников и разбираться с зависимостями, можно воспользоваться готовыми скриптами установки, вроде скрипта guac-install. Но — как обычно — за сторонние скрипты редакция ответственности не несет.

После установки согласно документации нужно так или иначе создать пользователей и настроить подключения. Я использовал работу с MySQL в качестве хранилища пользователей и их настроек и настраивал все это дело через веб-интерфейс. Через него доступно создание и настройка пользователей, подключений и групп, которые позволяют делать общие подключения для разных пользователей.

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

Стоит отметить, что если мы хотим прозрачно подключаться, авторизовавшись только через веб-интерфейс, то понадобится или вручную создавать каждому пользователю подключение, вводя его пароль (!), или делать более сложную установку. Например, использовать для хранения настроек и авторизации БД Active Directory, что потребует модификации схемы AD. Или настраивать авторизацию через LDAP, также создавая пользователей и в классической БД вроде MySql.

Без сложных установок придется создавать отдельных пользователей веб-интерфейса или делать одного общего. При этом если не задавать имя пользователя и пароль в настройках подключения, то надо отключить безопасность NLA на сервере. Не очень удобно.

Помимо полноценного рабочего стола есть и поддержка RemoteApp. Важный нюанс — прописывать имя программы в настройках нужно точно так же, как и в файле RDP.

Настройка RemoteApp.

И если все было сделано правильно, наша «семерка» откроется в браузере.

И снова 1С 7.7 в браузере.

Печать работает так же: скачивается PDF, но — в отличие от решения от MS, — есть возможность файлового обмена с сервером.

По сути, Apache Guacamole запускает у себя freerdp и может прокидывать папки со своей линуксовой машины на виндовый сервер.

Перенаправленный диск в 1С.

В свою очередь из браузера можно скачать или загрузить файл через специальное меню. В этом меню можно еще и настроить эмуляцию мыши и экранную клавиатуру. Вызывается оно сочетанием клавиш Ctrl+Alt+Shift.

Работа с файлами.

Текстовый буфер обмена также работает, но немного неудобно (бесит куда больше, чем решение от MS). Современные браузеры в паре с Apache Guacamole позволяют легко копировать текст с удаленного приложения при помощи Ctrl+C, но для вставки текста с локальной машины понадобится использовать меню по Ctrl+Alt+Shift.

Зато практически «из коробки» реализована двухфакторная аутентификация (особенно, если делать установку сторонним скриптом). Например, при помощи алгоритма TOTP.


Вкратце напомню: TOTP (Time-based One-time Password Algorithm) — это алгоритм генерации одноразовых паролей на основе времени. При первом входе пользователю будет предложено считать двухмерный штрих-код или записать набор символов, «скормить» их приложению (например, Google Authenticator). И на основе этого набора символов (security string) приложение каждые 30 секунд будет генерировать новое число-код для входа.

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

Плюсы:


  • Поддержка текстового буфера обмена и печати.
  • Поддержка файлового обмена.
  • Поддержка тачскринов в виде настраиваемой эмуляции мыши и клавиатуры.
  • Возможность записи сессии в видеофайл.

Минусы:


  • Необходимость отдельной машины или контейнера.
  • Сложность в настройке, особенно для специалиста, непривычного к Linux.
  • Не очень удобная работа текстового буфера обмена.

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


Проект со всей документацией располагается на github автора. В отличие от Guacamole, Myrtille устанавливается на Windows, да ещё и практически в режиме «Далее — Далее — ОК». Устанавливаем, запускаем браузер.

Windows в браузере.

Помимо RDP поддерживается SSH и подключение к виртуальной машине Hyper-V. Меню управления подключением вызывается по кнопке с тремя точками в левом верхнем углу.

Меню управления подключением.

Работа с файлами производится через веб-интерфейс — по кнопке Files открывается доступ к папке «Мои документы» пользователя для загрузки и скачивания файлов. При этом если Myrtille установлен не на терминальном сервере, придется настраивать перенаправление папки. Печать, в отличие от двух других решений, сразу вызывает окно с диалогом печати PDF.

Чуть хуже дела с RemoteApp при работе приложения в обычном режиме. Для запуска несчастной 1С нужно сформировать ссылку вида:


https://myserver/Myrtille/?__EVENTTARGET=&__EVENTARGUMENT=&server=server&domain=domain&user=user&passwordHash=passwordHash&program=program

В которой нужно явно указать пользователя и его пароль (или хэш пароля). Программу необходимо прописать так же, как и в файле RDP — в случае нашей 1С это будет ||1cv7l. Все параметры должны быть URL-encoded.

И в третий раз 1С в браузере.


Для получения хэша пароля можно также воспользоваться myrtille, просто перейдя по ссылке (выполнив GET-запрос):

https://server/myrtille/GetHash.aspx?password=password

Двухфакторная аутентификация также доступна «из коробки» и основана на сервисе oliveinnovations.com.

Для работы в доменной среде у приложения есть отдельный режим работы — Enterprise mode. Для его включения нужно при установке (или потом, в файлах конфигурации) указать имя домена и группу администраторов (пользователей, которые могут настраивать подключения). Тогда при входе будет запрашиваться только имя пользователя и пароль, и администратор может создавать предопределенные конфигурации подключения для групп пользователей. Это и позволит нам сделать удобный ярлык для запуска 1С.

Создание подключения в панели управления Enterprise-режима.

Теперь пользователь при входе будет видеть доступные ему подключения и запускать 1С по кнопке, а не по странной ссылке с паролем.

Интерфейс при входе обычного пользователя.

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

Итого.

Плюсы:


  • Простая установка на Windows.
  • Поддержка почти всего, что нужно, вроде печати и передачи файлов.
  • Возможность подключения к приложению или рабочему столу сразу по ссылке.
  • Есть возможность работы в режиме совместимости (HTML4).

Минусы:


  • Пока нормально не работает текстовый буфер обмена.
  • Работа с файлами удобна, только если сервис установлен непосредственно на терминальном сервере.

Конечно, существуют и другие решения, в том числе и платные. Приведу несколько самых популярных, не трогая монстров вроде Xen Desktop:


В них уже есть поддержка принтеров и работы с файлами, но в принципе и бесплатные решения более-менее дошли до аналогичного уровня.

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

habr.com

5 веб-сервисов для удаленного доступа к вашему компьютеру

Возможность дистанционной работы с компьютером — вещь просто незаменимая и важная. Удаленный доступ (Remote access ) к вашему ПК позволяет получить доступ ко всем вашим файлам, программам с другого компьютера через интернет из любой точки мира в любое время. Это дает возможность организовывать совместные митинги, интерактивные конференции, общаться с друзьями, демонстрировать работу программ и многое другое на что хватит фантазии :-).

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

TeamViewer — несомненно, один из лидеров среди сервисов удаленного доступа к ПК.  TeamViewer всего за несколько секунд устанавливает соединение с любым ПК или сервером в мире.

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

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

TeamViewer включает полное шифрование данных, базирующееся на обмене личными/публичными ключами RSA и шифровании сеансов AES (256 бит). Эта технология основана на тех же стандартах, что и https/SSL, и считается абсолютно безопасной среди использующихся в настоящее время стандартов.

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

TeamViewer предоставляет две версии:

  • Бесплатная  — для некоммерческого использования, однако бесплатная версия имеет ряд ограничений. Не поддерживается кросс-платформенная работа, в клиентский модуль нельзя встроить логотип своей компании, нет возможности использовать для соединения высокопроизводительные серверы компании, не поддерживается установка на серверные системы, количество партнеров при проведении презентации ограничено двумя.
  • Платная — лицензия с неограниченным сроком действия в трех вариантах : бизнес, премиум и корпорация. Ее стоимость варьируется от 700…3200 у.е. за одну лицензию.

TeamViewer работает на операционных системах Windows, Mac OS X, Linux, iOS и Android.

LogMeIn — одно из популярных приложений для удаленного доступа к ПС. Оно позволяет быстро и легко управлять удаленным компьютером через Интернет, как если бы вы сидели прямо перед ним. Приложение очень просто в  установке и есть 100% бесплатная версия для использования, в которую входит помимо всего прочего приложения для удаленного доступа на ваш ПК с любого iPad/iPhone и что немаловажно — в бесплатной версии используется 256-bit SSL шифрование, как и в платной.

Платные версии стартуют от 12 евро за 1 комьютер в месяц, есть много разных пакетов по ценам и функционалу. Например, чем больше компьютеров Вы хотите подключить с помощью LogMeIn, тем ниже цена за 1 комьютер.

ShowMyPc — еще один веб-сервис для удаленного доступа и совместного использования компьютера. Имеется стандартный набор удаленного доступа и администрирования. Есть бесплатная версия, но она довольно ограничена по функционалу и подходит для небольших задач, зато платные версии стоят довольно демократически в цене и стартуют от 14 у.е. в месяц.

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

Поддерживает стандартный набор удаленного доступа. Помимо удалённого управления, поддерживаются дополнительные возможности, такие как модуль шифрования для безопасного клиент-серверного соединения. Содержит модуль Java Viewer, который позволяет получить доступ к компьютеру, используя простой Web-браузер, поддерживающий Java. Также возможна отправка файлов, чат и различные методы аутентификации. Довольно интересна одна из возможностей программы — тонкая настройка серверной части, например, если вы хотите скрыть наличие на удаленном компьютере программы-сервера.

RealVNC — программа для удаленного доступа к компьютеру. Существует бесплатная версия под Windows и Linux, но она подходит только для индивидуального удаленного доступа, кроме того бесплатная вресия не поддерживает безопасное шифрование. Платные версии содержат стандартный набор по удаленному доступу и стартуют от 30 у.е. за 1 компьютер

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

ТопОбзор  по материалам technobuzz.net

Похожее

www.topobzor.com

Настройка веб-клиента удаленного рабочего стола для пользователей

  • Время чтения: 11 мин

В этой статье

Веб-клиент удаленного рабочего стола позволяет пользователям обращаться к инфраструктуре удаленных рабочих столов организации через совместимый браузер.The Remote Desktop web client lets users access your organization's Remote Desktop infrastructure through a compatible web browser. Они смогут взаимодействовать с удаленными приложениями или рабочими столами, как с локальным компьютером, независимо от того, где они находятся.They'll be able to interact with remote apps or desktops like they would with a local PC no matter where they are. После настройки веб-клиента удаленного рабочего стола все, что нужно будет пользователям, чтобы приступить к работе — это URL-адрес, по которому они смогут обратиться к клиенту, а также учетные данные и поддерживаемый веб-браузер.Once you set up your Remote Desktop web client, all your users need to get started is the URL where they can access the client, their credentials, and a supported web browser.

Что потребуется для настройки веб-клиентаWhat you'll need to set up the web client

Перед началом работы необходимо помнить следующее.Before getting started, keep the following things in mind:

  • Убедитесь, что в вашем развертывании Удаленного рабочего стола есть шлюз удаленных рабочих столов, посредник подключений к удаленному рабочему столу и служба веб-доступа к удаленным рабочим столам на платформе Windows Server 2016 или Windows Server 2019.Make sure your Remote Desktop deployment has an RD Gateway, an RD Connection Broker, and RD Web Access running on Windows Server 2016 or 2019.
  • Убедитесь, что развертывание настроено для использования клиентских лицензий "на пользователя", а не клиентских лицензий "на устройство". В противном случае будут использованы все лицензии.Make sure your deployment is configured for per-user client access licenses (CALs) instead of per-device, otherwise all licenses will be consumed.
  • Установите обновление KB4025334 для Windows 10 на шлюзе удаленных рабочих столов.Install the Windows 10 KB4025334 update on the RD Gateway. Более поздние накопительные пакеты обновления могут уже содержать обновление из этой статьи базы знаний.Later cumulative updates may already contains this KB.
  • Убедитесь, что общедоступные доверенные сертификаты настроены для ролей шлюза удаленных рабочих столов и веб-доступа к удаленным рабочим столам.Make sure public trusted certificates are configured for the RD Gateway and RD Web Access roles.
  • Убедитесь, что все компьютеры, к которым ваши пользователи будут подключаться, работают под управлением одной из следующих версий операционной системы:Make sure that any computers your users will connect to are running one of the following OS versions:
    • Windows 10Windows 10
    • Windows Server 2008 R2 или более поздней версии.Windows Server 2008R2 or later

Пользователи ощутят более высокую производительность подключения к Windows Server 2016 (или более поздней версии) и Windows 10 (версии 1611 или более поздней версии).Your users will see better performance connecting to Windows Server 2016 (or later) and Windows 10 (version 1611 or later).

Важно!

Если вы использовали веб-клиент во время действия предварительной версии и установили версию, предшествующую версии 1.0.0, то сначала необходимо удалить более ранний клиент, а затем перейти на новую версию.If you used the web client during the preview period and installed a version prior to 1.0.0, you must first uninstall the old client before moving to the new version. Если появится сообщение об ошибке: "The web client was installed using an older version of RDWebClientManagement and must first be removed before deploying the new version" (Веб-клиент был установлен с помощью более ранней версии RDWebClientManagement и должен быть удален перед развертыванием новой версии), выполните следующие действия.If you receive an error that says "The web client was installed using an older version of RDWebClientManagement and must first be removed before deploying the new version," follow these steps:

  1. Откройте командную строку с повышенными привилегиями PowerShell.Open an elevated PowerShell prompt.
  2. Выполните командлет RDWebClientManagement Uninstall-Module, чтобы удалить новый модуль.Run Uninstall-Module RDWebClientManagement to uninstall the new module.
  3. Закройте и снова откройте командную строку с повышенными привилегиями PowerShell.Close and reopen the elevated PowerShell prompt.
  4. Выполните командлет RDWebClientManagement Install-Module - RequiredVersion <более_ранняя_версия>, чтобы установить более ранний модуль.Run Install-Module RDWebClientManagement -RequiredVersion <old version> to install the old module.
  5. Выполните командлет RDWebClient удаления, чтобы удалить более ранний веб-клиент.Run Uninstall-RDWebClient to uninstall the old web client.
  6. Выполните командлет RDWebClientManagement Uninstall-Module, чтобы удалить более ранний модуль.Run Uninstall-Module RDWebClientManagement to uninstall the old module.
  7. Закройте и снова откройте командную строку с повышенными привилегиями PowerShell.Close and reopen the elevated PowerShell prompt.
  8. Выполните шаги обычной установки, как описано ниже.Proceed with the normal installation steps as follows.

Как опубликовать веб-клиент удаленного рабочего столаHow to publish the Remote Desktop web client

Чтобы впервые установить веб-клиент, выполните следующие действия.To install the web client for the first time, follow these steps:

  1. На сервере посредника подключений к удаленному рабочему столу получите сертификат, используемый для подключений к удаленному рабочему столу, и экспортируйте его как CER-файл.On the RD Connection Broker server, obtain the certificate used for Remote Desktop connections and export it as a .cer file. Скопируйте CER-файл из посредника подключений к удаленному рабочему столу на сервер, которому назначена роль веб-доступа к удаленным рабочим столам.Copy the .cer file from the RD Connection Broker to the server running the RD Web role.

  2. На сервере веб-доступа к удаленным рабочим столам откройте командную строку с повышенными привилегиями PowerShell.On the RD Web Access server, open an elevated PowerShell prompt.

  3. В Windows Server 2016 обновите модуль PowerShellGet, так как версия папки "Входящие" не поддерживает установку модуля управления веб-клиентом.On Windows Server 2016, update the PowerShellGet module since the inbox version doesn't support installing the web client management module. Чтобы обновить PowerShellGet, выполните следующий командлет.To update PowerShellGet, run the following cmdlet:

    Install-Module -Name PowerShellGet -Force
    

    Важно!

    Необходимо будет перезапустить PowerShell, чтобы обновление вступило в силу, в противном случае модуль может не работать.You'll need to restart PowerShell before the update can take effect, otherwise the module may not work.

  4. Установите модуль PowerShell управления веб-клиентом удаленного рабочего стола из коллекции PowerShell с помощью следующего командлета.Install the Remote Desktop web client management PowerShell module from the PowerShell gallery with this cmdlet:

    Install-Module -Name RDWebClientManagement
    
  5. После этого выполните приведенный ниже командлет, чтобы скачать последнюю версию веб-клиента удаленного рабочего стола.After that, run the following cmdlet to download the latest version of the Remote Desktop web client:

    Install-RDWebClientPackage
    
  6. Затем выполните этот командлет, заменив значение в квадратных скобках путем к CER-файлу, который был скопирован из посредника подключений к удаленному рабочему столу.Next, run this cmdlet with the bracketed value replaced with the path of the .cer file that you copied from the RD Broker:

    Import-RDWebClientBrokerCert <.cer file path>
    
  7. Наконец, выполните следующий командлет, чтобы опубликовать веб-клиент удаленного рабочего стола.Finally, run this cmdlet to publish the Remote Desktop web client:

    Publish-RDWebClientPackage -Type Production -Latest
    

    Убедитесь, что можете получить доступ к веб-клиенту по его URL-адресу с именем вашего сервера в следующем формате: https://server_FQDN/RDWeb/webclient/index.html.Make sure you can access the web client at the web client URL with your server name, formatted as https://server_FQDN/RDWeb/webclient/index.html. В URL-адресе важно использовать имя сервера, которое соответствует общедоступному сертификату для веб-доступа к удаленным рабочим столам (обычно это полное доменное имя сервера).It's important to use the server name that matches the RD Web Access public certificate in the URL (typically the server FQDN).

    Примечание

    При выполнении командлета Publish-RDWebClientPackage может появиться предупреждение о том, что клиентские лицензии "на устройство" не поддерживаются, даже если развертывание настроено для использования клиентских лицензий "на пользователя".When running the Publish-RDWebClientPackage cmdlet, you may see a warning that says per-device CALs are not supported, even if your deployment is configured for per-user CALs. Если в развертывании используются клиентские лицензии "на пользователя", это предупреждение можно игнорировать.If your deployment uses per-user CALs, you can ignore this warning. Мы отображаем его, чтобы убедиться, что вам известно об ограничении конфигурации.We display it to make sure you're aware of the configuration limitation.

  8. Когда все будет готово для предоставления пользователям доступа к веб-клиенту, просто отправьте им созданный вами URL-адрес веб-клиента.When you're ready for users to access the web client, just send them the web client URL you created.

Примечание

Чтобы просмотреть список всех поддерживаемых командлетов модуля RDWebClientManagement, выполните следующий командлет PowerShell.To see a list of all supported cmdlets for the RDWebClientManagement module, run the following cmdlet in PowerShell:

Get-Command -Module RDWebClientManagement

Как обновить веб-клиент удаленного рабочего столаHow to update the Remote Desktop web client

Если доступна новая версия веб-клиента удаленного рабочего стола, выполните следующие действия, чтобы обновить развертывание, установив новый клиент.When a new version of the Remote Desktop web client is available, follow these steps to update the deployment with the new client:

  1. Откройте командную строку с повышенными привилегиями PowerShell на сервере веб-доступа к удаленным рабочим столам и выполните следующий командлет, чтобы скачать последнюю доступную версию веб-клиента.Open an elevated PowerShell prompt on the RD Web Access server and run the following cmdlet to download the latest available version of the web client:

    Install-RDWebClientPackage
    
  2. При необходимости вы можете опубликовать клиент для тестирования перед официальным выпуском, выполнив следующий командлет.Optionally, you can publish the client for testing before official release by running this cmdlet:

    Publish-RDWebClientPackage -Type Test -Latest
    

    Клиент должен быть доступен по тестовому URL-адресу, который соответствует URL-адресу вашего веб-клиента (например, https://server_FQDN/RDWeb/webclient-test/index.html).The client should appear on the test URL that corresponds to your web client URL (for example, https://server_FQDN/RDWeb/webclient-test/index.html).

  3. Опубликуйте клиент для пользователей, выполнив следующий командлет.Publish the client for users by running the following cmdlet:

    Publish-RDWebClientPackage -Type Production -Latest
    

    Это заменит клиент для всех пользователей, когда они повторно откроют веб-страницу.This will replace the client for all users when they relaunch the web page.

Как удалить веб-клиент удаленного рабочего столаHow to uninstall the Remote Desktop web client

Чтобы удалить все следы веб-клиента, выполните следующие действия.To remove all traces of the web client, follow these steps:

  1. На сервере веб-доступа к удаленным рабочим столам откройте командную строку с повышенными привилегиями PowerShell.On the RD Web Access server, open an elevated PowerShell prompt.

  2. Отмените публикацию тестового и рабочего клиентов, удалите все локальные пакеты, а затем удалите параметры веб-клиента.Unpublish the Test and Production clients, uninstall all local packages and remove the web client settings:

    Uninstall-RDWebClient
    
  3. Удалите модуль PowerShell управления веб-клиентом удаленного рабочего стола.Uninstall the Remote Desktop web client management PowerShell module:

    Uninstall-Module -Name RDWebClientManagement
    

Как установить веб-клиент удаленного рабочего стола без подключения к ИнтернетуHow to install the Remote Desktop web client without an internet connection

Выполните следующие действия, чтобы развернуть веб-клиент на сервере веб-доступа к удаленным рабочим столам, который не подключен к Интернету.Follow these steps to deploy the web client to an RD Web Access server that doesn't have an internet connection.

Примечание

Установка без подключения к Интернету доступна для версии 1.0.1 и более поздних версий модуля PowerShell RDWebClientManagement.Installing without an internet connection is available in version 1.0.1 and above of the RDWebClientManagement PowerShell module.

Примечание

По-прежнему требуется компьютер администратора с доступом к Интернету, чтобы скачать необходимые файлы перед их передачей на автономный сервер.You still need an admin PC with internet access to download the necessary files before transferring them to the offline server.

Примечание

Пока что на компьютере пользователя требуется подключение к Интернету.The end-user PC needs an internet connection for now. Это будет устранено в будущем выпуске клиента, чтобы обеспечить сценарий полностью автономного режима.This will be addressed in a future release of the client to provide a complete offline scenario.

На устройстве с доступом к ИнтернетуFrom a device with internet access

  1. Откройте командную строку PowerShell.Open a PowerShell prompt.

  2. Импортируйте модуль PowerShell управления веб-клиентом удаленного рабочего стола из коллекции PowerShell.Import the Remote Desktop web client management PowerShell module from the PowerShell gallery:

    Import-Module -Name RDWebClientManagement
    
  3. Скачайте последнюю версию веб-клиента удаленного рабочего стола для установки на другом устройстве.Download the latest version of the Remote Desktop web client for installation on a different device:

    Save-RDWebClientPackage "C:\WebClient\"
    
  4. Скачайте последнюю версию модуля PowerShell RDWebClientManagement.Download the latest version of the RDWebClientManagement PowerShell module:

    Find-Module -Name "RDWebClientManagement" -Repository "PSGallery" | Save-Module -Path "C:\WebClient\"
    
  5. Скопируйте содержимое C:\WebClient" на сервер веб-доступа к удаленным рабочим столам.Copy the content of "C:\WebClient" to the RD Web Access server.

На сервере веб-доступа к удаленным рабочим столамFrom the RD Web Access server

Следуйте инструкциям в разделе Как опубликовать веб-клиент удаленного рабочего стола, но вместо шагов 4 и 5 выполните следующее.Follow the instructions under How to publish the Remote Desktop web client, replacing steps 4 and 5 with the following.

  1. Импортируйте модуль PowerShell управления веб-клиентом удаленного рабочего стола из локальной папки.Import the Remote Desktop web client management PowerShell module from the local folder:

    Import-Module -Name "C:\WebClient\"
    
  2. Разверните последнюю версию веб-клиента удаленного рабочего стола в локальной папке (замените соответствующий ZIP-файл).Deploy the latest version of the Remote Desktop web client from the local folder (replace with the appropriate zip file):

    Install-RDWebClientPackage -Source "C:\WebClient\rdwebclient-1.0.1.zip"
    

Подключение к посреднику подключений к удаленному рабочему столу без шлюза удаленных рабочих столов в Windows Server 2019Connecting to RD Broker without RD Gateway in Windows Server 2019

В этом разделе описывается, как обеспечить подключение веб-клиента к посреднику подключений к удаленному рабочему столу без шлюза удаленных рабочих столов в Windows Server 2019.This section describes how to enable a web client connection to an RD Broker without an RD Gateway in Windows Server 2019.

Настройка сервера посредника подключений к удаленному рабочему столуSetting up the RD Broker server

Выполните следующие действия, если к серверу посредника подключений к удаленному рабочему столу не привязан сертификат.Follow these steps if there is no certificate bound to the RD Broker server
  1. Выберите Диспетчер серверов > Службы удаленных рабочих столов.Open Server Manager > Remote Desktop Services.

  2. В разделе Обзор развертывания выберите раскрывающееся меню Задачи.In Deployment Overview section, select the Tasks dropdown menu.

  3. Выберите Edit Deployment Properties (Изменить свойства развертывания), откроется новое окно Свойства развертывания будет открыт.Select Edit Deployment Properties, a new window titled Deployment Properties will open.

  4. В окне Свойства развертывания в меню слева выберите Сертификаты.In the Deployment Properties window, select Certificates in the left menu.

  5. Из списка "Уровни сертификатов" выберите Посредник подключений к удаленному рабочему столу: включение единого входа в систему.In the list of Certificate Levels, select RD Connection Broker - Enable Single Sign On. Доступны два варианта: создайте новый сертификат или используйте существующий сертификат.You have two options: (1) create a new certificate or (2) an existing certificate.

Выполните следующие действия, если к серверу посредника подключений к удаленному рабочему столу ранее был привязан сертификат.Follow these steps if there is a certificate previously bound to the RD Broker server
  1. Откройте сертификат, привязанный к посреднику, и скопируйте значение Thumbprint.Open the certificate bound to the Broker and copy the Thumbprint value.

  2. Чтобы привязать этот сертификат к защищенному порту 3392, откройте командную строку с повышенными привилегиями PowerShell и выполните следующую команду, заменив "< thumbprint >" значением, скопированным на предыдущем шаге.To bind this certificate to the secure port 3392, open an elevated PowerShell window and run the following command, replacing "< thumbprint >" with the value copied from the previous step:

    netsh http add sslcert ipport=0.0.0.0:3392 certhash="<thumbprint>" certstorename="Remote Desktop" appid="{00000000-0000-0000-0000-000000000000}"
    

    Примечание

    Чтобы проверить, был ли сертификат привязан правильно, выполните следующую команду.To check if the certificate has been bound correctly, run the following command:

    netsh http show sslcert
    

    В списке привязок SSL-сертификатов убедитесь, что правильный сертификат привязан к порту 3392.In the list of SSL Certificate bindings, ensure that the correct certificate is bound to port 3392.

  3. Откройте реестр Windows (regedit), перейдите к HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp и найдите раздел WebSocketURI.Open the Windows Registry (regedit) and nagivate to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp and locate the key WebSocketURI. Его значением должно быть https://+:3392/rdp/.The value must be set to https://+:3392/rdp/.

Настройка узла сеансов удаленных рабочих столовSetting up the RD Session Host

Если сервер узла сеансов удаленных рабочих столов отличается от сервера посредника подключений к удаленному рабочему столу, выполните следующие действия.Follow these steps if the RD Session Host server is different from the RD Broker server:

  1. Создайте сертификат для компьютера узла сеансов удаленных рабочих столов, откройте его и скопируйте значение Thumbprint.Create a certificate for the RD Session Host machine, open it and copy the Thumbprint value.

  2. Чтобы привязать этот сертификат к защищенному порту 3392, откройте командную строку с повышенными привилегиями PowerShell и выполните следующую команду, заменив "< thumbprint >" значением, скопированным на предыдущем шаге.To bind this certificate to the secure port 3392, open an elevated PowerShell window and run the following command, replacing "< thumbprint >" with the value copied from the previous step:

    netsh http add sslcert ipport=0.0.0.0:3392 certhash="<thumbprint>" appid="{00000000-0000-0000-0000-000000000000}"
    

    Примечание

    Чтобы проверить, был ли сертификат привязан правильно, выполните следующую команду.To check if the certificate has been bound correctly, run the following command:

    netsh http show sslcert
    

    В списке привязок SSL-сертификатов убедитесь, что правильный сертификат привязан к порту 3392.In the list of SSL Certificate bindings, ensure that the correct certificate is bound to port 3392.

  3. Откройте реестр Windows (regedit), перейдите к HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp и найдите раздел WebSocketURI.Open the Windows Registry (regedit) and nagivate to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp and locate the key WebSocketURI. Его значением должно быть https://+:3392/rdp/.The value must be set to https://+:3392/rdp/.

Общие наблюденияGeneral Observations

  • Убедитесь, что узел сеансов удаленных рабочих столов и сервер посредника подключений к удаленному рабочему столу выполняются в Windows Server 2019.Ensure that both the RD Session Host and RD Broker server are running Windows Server 2019.

  • Убедитесь, что для узла сеансов удаленных рабочих столов и сервера посредника подключений к удаленному рабочему столу настроены общедоступные доверенные сертификаты.Ensure that public trusted certificates are configured for both the RD Session Host and RD Broker server.

    Примечание

    Если узел сеансов удаленных рабочих столов и сервер посредника подключений к удаленному рабочему столу работают на одном компьютере, необходимо настроить только сертификат сервера посредника подключений к удаленному рабочему столу.If both the RD Session Host and the RD Broker server share the same machine, set the RD Broker server certificate only. Если узел сеансов удаленных рабочих столов и сервер посредника подключений к удаленному рабочему столу используют разные компьютеры, то для них должны быть настроены уникальные сертификаты.If the RD Session Host and RD Broker server use different machines, both must be configured with unique certificates.

  • В качестве альтернативного имени субъекта (SAN) для каждого сертификата нужно задать полное доменное имя (FQDN) компьютера.The Subject Alternative Name (SAN) for each certificate must be set to the machine's Fully Qualified Domain Name (FQDN). Общее имя (CN) должно соответствовать имени SAN для каждого сертификата.The Common Name (CN) must match the SAN for each certificate.

Как предварительно настроить параметры для пользователей веб-клиента удаленного рабочего столаHow to pre-configure settings for Remote Desktop web client users

В этом разделе мы расскажем о том, как использовать PowerShell для настройки параметров развертывания веб-клиента удаленного рабочего стола.This section will tell you how to use PowerShell to configure settings for your Remote Desktop web client deployment. Эти командлеты PowerShell позволяют управлять возможностями пользователя изменять параметры в соответствии с требованиями безопасности или рабочим процессом вашей организации.These PowerShell cmdlets control a user's ability to change settings based on your organization's security concerns or intended workflow. Следующие параметры находятся на боковой панели Параметры веб-клиента.The following settings are all located in the Settings side panel of the web client.

"Suppress telemetry" (Отключение телеметрии)Suppress telemetry

По умолчанию пользователь может включить или отключить сбор данных телеметрии, которые отправляются в корпорацию Майкрософт.By default, users may choose to enable or disable collection of telemetry data that is sent to Microsoft. Сведения о собираемых корпорацией Майкрософт данных телеметрии доступны в заявлении о конфиденциальности, к которому можно перейти по ссылке About (О программе) на боковой панели.For information about the telemetry data Microsoft collects, please refer to our Privacy Statement via the link in the About side panel.

Будучи администратором, вы можете отключить сбор данных телеметрии для развертывания с помощью следующего командлета PowerShell.As an administrator, you can choose to suppress telemetry collection for your deployment using the following PowerShell cmdlet:

 Set-RDWebClientDeploymentSetting -Name "SuppressTelemetry" $true

По умолчанию пользователь может включить или отключить сбор данных телеметрии.By default, the user may select to enable or disable telemetry. Логическое значение $false будет соответствовать поведению клиента по умолчанию.A boolean value $false will match the default client behavior. Логическое значение $true отключает телеметрию и запрещает включение телеметрии пользователем.A boolean value $true disables telemetry and restricts the user from enabling telemetry.

"Remote resource launch method" (Метод запуска удаленного ресурса)Remote resource launch method

Примечание

В настоящее время этот параметр работает только с веб-клиентом RDS, а не с веб-клиентом Виртуального рабочего стола Windows.This setting currently only works with the RDS web client, not the Windows Virtual Desktop web client.

По умолчанию пользователи могут выбрать, как запускать удаленные ресурсы: сделать это в браузере или скачать RDP-файл для обработки другим клиентом, установленным на своем компьютере.By default, users may choose to launch remote resources (1) in the browser or (2) by downloading an .rdp file to handle with another client installed on their machine. Будучи администратором, вы можете ограничить метод запуска удаленных ресурсов для развертывания с помощью следующей команды PowerShell.As an administrator, you can choose to restrict the remote resource launch method for your deployment with the following Powershell command:

 Set-RDWebClientDeploymentSetting -Name "LaunchResourceInBrowser" ($true|$false)

По умолчанию пользователь может выбрать любой из методов запуска.By default, the user may select either launch method. Логическое значение $true вынудит пользователя запускать ресурсы в браузере.A boolean value $true will force the user to launch resources in the browser. Логическое значение $false вынудит пользователя запускать ресурсы, скачивая RDP-файл для обработки с помощью локально установленного клиента RDP.A boolean value $false will force the user to launch resources by downloading an .rdp file to handle with a locally installed RDP client.

Сброс конфигурации RDWebClientDeploymentSetting до значений по умолчаниюReset RDWebClientDeploymentSetting configurations to default

Чтобы сбросить параметр веб-клиента на уровне развертывания до конфигурации по умолчанию, выполните следующий командлет PowerShell и укажите имя сбрасываемого параметра, используя параметр -name.To reset a deployment-level web client setting to the default configuration, run the following PowerShell cmdlet and use the -name parameter to specify the setting you want to reset:

 Reset-RDWebClientDeploymentSetting -Name "LaunchResourceInBrowser"
 Reset-RDWebClientDeploymentSetting -Name "SuppressTelemetry"

Поиск и устранение неисправностейTroubleshooting

Если пользователь сообщает о следующих проблемах при первом запуске веб-клиента, в разделах ниже описывается, как устранить эти проблемы.If a user reports any of the following issues when opening the web client for the first time, the following sections will tell you what to do to fix them.

Что делать, если в браузере пользователя отображается предупреждение о безопасности при попытке получения доступа к веб-клиентуWhat to do if the user's browser shows a security warning when they try to access the web client

Возможно, роль веб-доступа к удаленным рабочим столам не использует доверенный сертификат.The RD Web Access role might not be using a trusted certificate. Убедитесь, что для роли веб-доступа к удаленным рабочим столам настроен общедоступный доверенный сертификат.Make sure the RD Web Access role is configured with a publicly trusted certificate.

Если это не помогло, возможно, имя сервера в URL-адресе клиента отличается от имени, указанного в сертификате для веб-доступа к удаленным рабочим столам.If that doesn't work, your server name in the web client URL might not match the name provided by the RD Web certificate. Убедитесь, что в URL-адресе используется полное доменное имя сервера, на котором размещена роль веб-доступа к удаленным рабочим столам.Make sure your URL uses the FQDN of the server hosting the RD Web role.

Что делать, если пользователь не может подключиться к ресурсу с помощью веб-клиента, хотя и видит соответствующий элемент в разделе "Все ресурсы"What to do if the user can't connect to a resource with the web client even though they can see the items under All Resources

Если пользователь сообщил, что он не может подключиться к ресурсам с помощью веб-клиента, хотя видит их в списке, проверьте следующее.If the user reports that they can't connect with the web client even though they can see the resources listed, check the following things:

  • Правильно ли настроена роль шлюза удаленных рабочих столов для использования общедоступного доверенного сертификата?Is the RD Gateway role properly configured to use a trusted public certificate?
  • Установлены ли необходимые обновления на сервер шлюза удаленных рабочих столов?Does the RD Gateway server have the required updates installed? Убедитесь, что на сервере установлено обновление KB4025334.Make sure that your server has the KB4025334 update installed.

Если пользователь при попытке подключения получает сообщение об ошибке "unexpected server authentication certificate was received" (был получен непредвиденный сертификат аутентификации), то в нем будет отображен отпечаток сертификата.If the user gets an "unexpected server authentication certificate was received" error message when they try to connect, then the message will show the certificate's thumbprint. Выполните поиск в диспетчере сертификатов на сервере посредника подключений к удаленному рабочему столу с помощью этого отпечатка, чтобы найти соответствующий сертификат.Search the RD Broker server's certificate manager using that thumbprint to find the right certificate. Убедитесь, что сертификат настроен для использования для роли посредника подключений к удаленному рабочему столу на странице свойств развертывания Удаленного рабочего стола.Verify that the certificate is configured to be used for the RD Broker role in the Remote Desktop deployment properties page. Убедившись, что срок действия сертификата еще не истек, скопируйте сертификат в виде CER-файла на сервер веб-доступа к удаленным рабочим столам и выполните следующую команду на сервере веб-доступа к удаленным рабочим столам, заменив значение в квадратных скобках путем к файлу сертификата.After making sure the certificate hasn't expired, copy the certificate in .cer file format to the RD Web Access server and run the following command on the RD Web Access server with the bracketed value replaced by the certificate's file path:

Import-RDWebClientBrokerCert <certificate file path>

Диагностика проблем с помощью журнал консолиDiagnose issues with the console log

Если не удается устранить проблему, следуя инструкциям по устранению неполадок в этой статье, попробуйте самостоятельно диагностировать источник проблемы, просмотрев журнал консоли в браузере.If you can't solve the issue based on the troubleshooting instructions in this article, you can try to diagnose the source of the problem yourself by watching the console log in the browser. Веб-клиент предоставляет метод для записи действий из журнала консоли браузера при использовании веб-клиента для диагностики проблем.The web client provides a method for recording the browser console log activity while using the web client to help diagnose issues.

  • Щелкните многоточие в правом верхнем углу и перейдите на страницу About (О программе) с помощью раскрывающегося меню.Select the ellipsis in the upper-right corner and navigate to the About page in the dropdown menu.
  • В разделе Capture support information (Запись сведения для поддержки) нажмите кнопку Start recording (Начать запись).Under Capture support information select the Start recording button.
  • Выполните операции в веб-клиенте, в работе которого возникла диагностируемая проблема.Perform the operation(s) in the web client that produced the issue you are trying to diagnose.
  • Перейдите на страницу About (О программе) и нажмите кнопку Stop recording (Остановить запись).Navigate to the About page and select Stop recording.
  • Браузер автоматически скачает TXT-файл RD Console Logs.txt.Your browser will automatically download a .txt file titled RD Console Logs.txt. Этот файл будет содержать все действия из журнала консоли, созданные при воспроизведении изучаемой проблемы.This file will contain the full console log activity generated while reproducing the target issue.

В консоль также можно перейти непосредственно через браузер.The console may also be accessed directly through your browser. Консоль обычно находится в разделе средств разработчика.The console is generally located under the developer tools. Например, можно открыть журнал в Microsoft Edge, нажав клавишу F12 или щелкнув многоточие, а затем открыв меню Дополнительные средства > Средства разработчика.For example, you can access the log in Microsoft Edge by pressing the F12 key, or by selecting the ellipsis, then navigating to More tools > Developer Tools.

Помощь в работе с веб-клиентомGet help with the web client

Если возникла проблема, которую не удается устранить с помощью инструкций из этой статьи, сообщите нам о ней на портале Tech Community.If you've encountered an issue that can't be solved by the information in this article, you can report it on Tech Community. Вы можете также запросить новые возможности или проголосовать за них с помощью поля для предложений.You can also request or vote for new features at our suggestion box.

docs.microsoft.com

Методы удаленного доступа к Linux GUI / RUVDS.com corporate blog / Habr

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



Введение


На всякий случай возможно стоит упомянуть, что SSH — основной способ предоставления доступа к линуксовым виртуалкам на RUVDS. Большая часть действий описываемых в этой статье будет осуществляться именно таким образом.

Для подключения необходимо найти SSH-клиент для вашей операционной системы.

Windows:

  1. PuTTY: Telnet/SSH-Клиент
  2. OpenSSH для Cygwin
  3. OpenSSH для MinGW
  4. WinSCP

Linux:
  1. OpenSSH; если Вы пользуетесь Linux, например Ubuntu, скорее всего всё уже установлено, до нас, так что можно смело писать в терминале: ssh [email protected][IP].
  2. PuTTY есть и для Linux, в том числе в официальных репозиториях Debian и Ubuntu.

MAC OS:
  1. OpenSSH; это бесплатно!
  2. ZOC (80$!)
  3. vSSH

Плагины для браузеров:
  1. FireSSH для Firefox
  2. Secure Shell для Google Chrome

Установка GUI


Итак, перейдем к установке GUI. Сначала нужно поставить графическую подсистему:
Для Debian/Ubuntu:
$ apt-get update
$ apt-get install --no-install-recommends xserver-xorg xserver-xorg-core xfonts-base xinit libgl1-mesa-dri x11-xserver-utils

Для CentOS:
$ yum groupinstall "X Window System" "Fonts"

Далее следует установка Desktop Environment (DE). Их существует великое множество. Мы рекомендуем ставить на сервер более легковесные среды, а еще лучше, не ставить вовсе. Первые две DE достаточно компактные, функциональные и «привычные».

1. Xfce
Для Debian/Ubuntu:

$ apt-get update

Полная установка:
$ apt-get install task-xfce-desktop

Стандартная:
$ apt-get install xfce4 xfce4-terminal

Можно поставить дополнительно:
$ apt-get install xfce4-goodies

Для CentOS:
$ yum install epel-release
$ yum groupinstall "Xfce"
$ echo "PREFERRED=startxfce4" >> /etc/sysconfig/desktop

2. LXDE
Для Debian/Ubuntu:
$ apt-get update

Полная:
$ apt-get install lxde

Минимальная:
$ apt-get install lxde-core

Для CentOS:
Нет в официальных репозиториях

Добавление русской раскладки:
$ setxkbmap -option grp:switch,grp:ctrl_shirt_toggle us,ru

Сочетание клавиш можно менять на свое усмотрение, например:

$ setxkbmap -option grp:switch,grp:alt_shift_toggle us,ru

Чтобы эта команда запускалась каждый раз при запуске LXDE, нужно добавить в конец файла с помощью вашего любимого vi строку: @setxkbmap -option grp:switch,grp:ctrl_shift_toggle,grp_led:scroll us,ru. Или вот так…
$ echo "@setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ru" >> /etc/xdg/lxsession/LXDE/autostart

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

3. FluxBox
Для Debian/Ubuntu:

$ apt-get update
$ apt-get install fluxbox xterm

Для CentOS:
$ yum install fluxbox xterm
$ echo "PREFERRED=startfluxbox" >> /etc/sysconfig/desktop

4. Openbox
Для Debian/Ubuntu:

$ apt-get update
$ apt-get install openbox xterm

Для CentOS:
$ yum install epel-release
$ yum install openbox xterm
$ echo "PREFERRED=openbox-session" >> /etc/sysconfig/desktop

Далее следуют наиболее популярные на десктопах графические оболочки.

5. Gnome
Для Ubuntu/Debian:

$ apt-get update

Минимальная установка:
$ apt-get install --no-install-recommends lightdm gnome-panel gnome-terminal

Полная установка:
$ apt-get install gnome gnome-shell

Замечание: с настройкой VNC-сервера под Gnome что-то пошло не так… Сервера из репозиториев tightvncserver и vnc4server так и не согласились сотрудничать, поэтому пришлось собрать пару deb-пакетов руками. Если у Вас не получится настроить сервер, то мы можем порекомендовать скачать собранный нами архив с tigervnc-server’ом и поставить его. Для этого:
$ curl -LOk https://ruvds.com/downloads/tightvnc-packages.tar

Или
$ wget https://ruvds.com/downloads/tightvnc-packages.tar
$ tar -xvf tightvnc-packages.tar
$ cd ./tightvnc-packages
$ dpkg -i *.deb || (apt -f install -y ; dpkg -i *.deb)

Для CentOS:
$ yum groupinstall "GNOME"
$ echo "PREFERRED=gnome-session" >> /etc/sysconfig/desktop

6. KDE
Для Debian:
$ apt-get update

Полная:
$ apt-get install kde-full

Стандартная:
$ apt-get install kde-standart

Минимальная установка:
$ apt-get install kde-plasma-desktop

Для CentOS:
$ yum groupinstall "KDE"
$ echo "PREFERRED=startkde" >> /etc/sysconfig/desktop

7. Cinnamon
Для Debian/Ubuntu:
$ apt-get update
$ apt-get install --no-install-recommends cinnamon-core lightdm

Для CentOS:
$ yum install cinnamon

8. MATE
Для Debian/Ubuntu:
$ apt-get update

Полная:
$ apt-get install mate-desktop-environment-extras

Стандартная:
$ apt-get install mate-desktop-environment

Минимальная:
$ apt-get install mate-desktop-environment-core

Для CentOS:
$ yum groupinstall "MATE Desktop"

Если Вы хотите получать доступ к GUI через «Аварийный режим», то необходимо сделать следующее:
$ systemctl set-default graphical.target

Мало того, необходимо обеспечить запуск графической оболочки при старте системы. Для этого можно установить какой-нибудь экранный менеджер (Display Manager, DM), например:
$ apt-get install lightdm

Или в случае с CentOS:
$ yum install lightdm

Если необходимости в доступе из личного кабинета нет, то следует выполнить:
$ systemctl set-default multi-user.target

Заметка: Ubuntu предлагает своим пользователям несколько метапакетов для более удобной установки нужной DE:

Unitu:

$ apt-get install ubuntu-desktop

LXDE:
$ apt-get install lubuntu-desktop

XFCE:
$ apt-get install xubuntu-desktop

KDE:
$ apt-get install kubuntu-desktop

Далее, есть много способов получить удаленный доступ к GUI.

Удаленный доступ


RDP


На виртуальном сервере, в зависимости от OS нужно произвести следующие действия.

Debian:

$ apt-get install xrdp
$ systemctl enable xrdp
$ systemctl start xrdp

CentOS:
$ yum install epel-release
$ yum install xrdp tigervnc-server tigervnc-server-module
$ chcon -t bin_t /usr/sbin/xrdp
$ chcon -t bin_t /usr/sbin/xrdp-sesman
$ firewall-cmd --zone=public --add-port=3389/tcp --permanent
$ firewall-cmd --zone=public --add-port=3389/udp --permanent
$ firewall-cmd --reload
$ systemctl enable xrdp
$ systemctl start xrdp

XDMCP:
$ vi /etc/gdm/custom.conf

[security]
AllowRemoteRoot=true
DisallowTCP=false
 
[xdmcp]
Enable=true
MaxSessions=30

Далее, если вы используете Windows, подключаемся через встроенный RDP-клиент, Remote Desktop Connection (Подключение к удаленному рабочему столу).

Стандартный порт 3389. Для Linux есть масса клиентов которые можно установить из репозиториев: freerdp и remmina, gnome-rdp, vinagre и т.п.

Для Mac OS:

Также можно пробросить RDP-шный трафик через SSH-туннель. Для этого нужно поправить конфигурационный файл xrdp:

$ vi /etc/xrdp/xrdp.ini

В секцию [globals] нужно добавить строку: address=127.0.0.1
$ systemctl restart xrdp

Проверить, что всё правильно, можно так:
$ nmap -p 3389 [IP]

Starting Nmap 6.47 ( http://nmap.org ) at 2016-10-04 13:07 MSK
Nmap scan report for unspecified.mtw.ru ([IP])
Host is up (0.0087s latency).
PORT     STATE  SERVICE
3389/tcp closed ms-wbt-server

Затем если вы используете cygwin или mingw, linux или mac os:
ssh [email protected][IP] -L 3389:localhost:3389

Если PuTTY:

Запустите PuTTY. В древовидном меню слева Connection → SSH → Tunnels. Далее добавляем новый Forwarded Port (Source port: 3389, Destination: localhost:3389). Нажимаем Add.

Далее следуете в секцию Session. Вводите IP вашего сервера в поле Host Name (or IP address). Нажимаете кнопку Open, вводите пароль для подключения по SSH.

Далее для Windows:

VNC


Клиент:

Для Windows:

  1. www.realvnc.com
  2. www.tightvnc.com
  3. www.uvnc.com/downloads/ultravnc.html

Для Linux:
  1. Можно использовать вышеупомянутый клиент: remmina
  2. Если в браузере хотите: novnc — HTML5 VNC client
  3. И ещё куча всяких разных: directvnc, gnome-rdp, krdc, xtightvncviewer, vinagre, xvnc4viewer

Для MAC OS:

OS X предоставляет для этого встроенное приложение Screen Sharing. Можно также использовать Safari

vnc://yourserverip:5901

Сервер: На Вашей виртуальной машине установите VNC сервер:
$ apt-get install tightvncserver

Или
$ apt-get install vnc4server
$ yum install tigervnc-server

Если на Вашей системе работает файрвол необходимо открыть соответствующие порты. Пример для CentOS
$ firewall-cmd --zone=public --add-port=5901/tcp --permanent
$ firewall-cmd --zone=public --add-port=5901/udp --permanent
$ firewall-cmd --reload

Далее выполните:
$ vncpasswd
Password:
Verify:

При возникновении проблем с отображением иконок и шрифтов при использовании xfce4 по Ubuntu/Debian:
$ echo "export XKL_XMODMAP_DISABLE=1" >> ~/.vnc/xstartup

Если вы хотите, чтобы VNC-сервер стартовал автоматически, создайте файл:
$ vi /lib/systemd/system/vncsrv.service

Со следующим содержимым:
[Service]
Environment=RESOLUTION=800x600
Environment=COLOR=16
Environment=DISPLAY=1

[Unit]
Description=VNC Server

[Service]
Type=forking
ExecStart=/usr/bin/vncserver -depth ${DEPTH} -geometry ${RESOLUTION} :${DISPLAY}
ExecStop=/usr/bin/vncserver -kill :${DISPLAY}
ExecReload=/usr/bin/vncserver -kill :${DISPLAY} && /usr/bin/vncserver -depth ${DEPTH} -geometry ${RESOLUTION} :${DISPLAY}
User=root

[Install]
WantedBy=multi-user.target

Делее выполните:
systemctl daemon-reload
systemctl enable vncsrv.service
systemctl start vncsrv.service

Теперь можно подключиться, например, через UltraVNC. Для этого нужно запустить UltraVNC Viewer, в поле VNC Server записать [IP]::5901 (по-умолчанию: 5901, 5902 и т.п. для первого дисплея, второго и т.д. соответственно) и нажать на кнопку подключиться.

Также можно пустить vnc-шный трафик через ssh-туннель. Для этого отредактируйте:

$ vi /lib/systemd/system/vncsrv.service

[Service]
Environment=RESOLUTION=800x600
Environment=COLOR=16
Environment=DISPLAY=1

[Unit]
Description=VNC Server

[Service]
Type=forking
ExecStart=/usr/bin/vncserver -depth ${DEPTH} -geometry ${RESOLUTION} :${DISPLAY} -localhost
ExecStop=/usr/bin/vncserver -kill :${DISPLAY}
ExecReload=/usr/bin/vncserver -kill :${DISPLAY} && /usr/bin/vncserver -depth ${DEPTH} -geometry ${RESOLUTION} :${DISPLAY} -localhost
User=root

[Install]
WantedBy=multi-user.target

Затем если вы используете cygwin или mingw, linux или mac os:
ssh [email protected][IP] -L 5901:localhost:5901

Если PuTTY:
Запустите PuTTY. В древовидном меню слева Connection → SSH → Tunnels. Далее добавляем новый Forwarded Port (Source port: 5901, Destination: localhost:5901). Нажимаем Add.

Далее следуете в секцию Session. Вводите IP вашего сервера в поле Host Name (or IP address). Нажимаете кнопку Open, вводите пароль для подключения по SSH.

Затем открываете UltraVNC Viewer и в поле VNC Server вводите: localhost::5901 после чего подключаетесь.

Также можете попробовать другие VNC-сервера:

x11vnc — фактически VNC-сервер (как vnc4server или tightvnc), но позволяет получать доступ к уже существующей X-сессии. Т.е. если Вы настроили графическую оболочку таким образом, что она запускается при старте системы, то можно использовать следующий вариант:

$ apt-get install x11vnc
$ x11vnc -storepasswd
$ x11vnc -usepw
$ x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw &
$ disown -h %1

После подключения по VNC (на порт 5900) Вы должны увидеть тоже что и в «Аварийном режиме».

Для старта x11vnc при запуске OS необходимо проделать следующее:

$ vi /lib/systemd/system/xvncsrv.service

Добавляем:
[Unit]
Description=X11VNC

[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :2 -usepw
User=root

[Install]
WantedBy=graphical.target

Далее:
systemctl daemon-reload
systemctl enable xvncsrv.service
systemctl start xvncsrv.service

NX


Теперь немного поинтереснее. Одна замечательная компания NoMachine разработала отличный протокол NX на замену VNC. Клиенты для подключения по этому протоколу бесплатны, а официальное серверное ПО от NoMachine  стоит много денег. В свое время, эта же компания поддерживала проект FreeNX работы на котором со временем затихли; текущая версия 0.7.2 от 2008-08-22. Но, к счастью, нашлись люди создавшие форк и назвавшие его x2go. К сожалению, x2go не совместим ни с NX от NoMachine, ни с freeNX. Так что клиент берем тут.

Установка сервера на Debian (источник):

Для примера поставим эту DE:

$ apt-get install fluxbox

Далее следуем инструкциям с оффициального сайта:
$ apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
$ echo "deb http://packages.x2go.org/debian jessie main" > /etc/apt/sources.list.d/x2go.list
$ echo "deb-src http://packages.x2go.org/debian jessie main" >> /etc/apt/sources.list.d/x2go.list
$ apt-get update
$ apt-get install x2go-keyring && apt-get update
$ apt-get install x2goserver x2goserver-xsession

Вывод следующей команды должен показать, что x2go готов к работе:
$ systemctl status x2goserver
● x2goserver.service - LSB: Start and stop the X2Go daemon
   Loaded: loaded (/etc/init.d/x2goserver)
   Active: active (running) since Tue 2016-10-11 22:05:51 MSK; 30min ago
...

А теперь важный момент, подключиться без этого фикса не получится! Нужно найти в файле .profile строку «mesg n» и заменить её на «tty -s && mesg n».
$ vi .profile

Следующая команда выведет путь до исполняемого файла startfluxbox, понадобится при настройке клиента:
$ whereis startfluxbox

Установка сервера на Ubuntu:
$ apt-get install xfce4 xfce4-terminal
$ add-apt-repository ppa:x2go/stable
$ apt-get update
$ apt-get install x2goserver x2goserver-xsession

А теперь важный момент, подключиться без этого фикса не получится! Нужно найти в файле .profile строку «mesg n || true» и заменить её на «tty -s && mesg n».
$ vi .profile

Установка сервера на CentOS:
$ yum install epel-release
$ yum install x2goserver x2goserver-xsession

Клиент для линукс ставится из вышеприведенных репозиториев следующей командой:
$ apt-get install x2goclient

Для Windows — скачиваем, ставим, запускаем. По той же ссылке, приведенной выше, есть клиент для OS X.

Запускаем клиент:

В настройках сессии указываем: в поле Host — IP вашего сервера, в поле Login — root, порт оставляем как есть, session type — тот GUI который ставили.

Как вы можете видеть, есть возможность аутентификации по ключу. В общем много всякого. Посмотрите сами. И звук можно через PulseAudio выводить.

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

Замечание: обратите внимание, что в списке нет Вашего любимого FluxBox’а поэтому путь к нему приходится прописывать руками.

Важной возможностью x2go является возможность запуска любого графического приложения вообще без установки DE. Для этого в настройках сессии нужно в секции session type нужно выбрать пункт single application и выбрать выполняемое приложение или ввести путь к программе которую следует запустить.

В этом случае установка ПО на сервер будет выглядеть следующим образом. В случае с Ubuntu:

$ add-apt-repository ppa:x2go/stable
$ apt-get update
$ apt-get install x2goserver x2goserver-xsession

А теперь важный момент, подключиться без этого фикса не получится! Нужно найти в файле .profile строку «mesg n || true» и заменить её на «tty -s && mesg n».
$ vi .profile
$ apt-get install firefox xterm

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

Или так; тогда просто откроется окно терминала:

Ниже вы можете видеть скриншот окна статуса текущей сессии. Оранжевыми цифрами отмечены кнопки:

  1. «Suspend session» — после нажатия на эту кнопку соединение будет разорвано, но сессия останется и будет ожидать повторного подключения. Все запущенные вами на сервере приложения продолжат свою работу;
  2. «Terminate session» — после нажатия подключение к серверу будет разорвано, а запущенные вами на сервере приложения будут завершены.

TeamViewer


Последний способ удаленного доступа к рабочему столу.

Установка на Ubuntu:

$ apt-get update
$ apt-get install lubuntu-desktop
$ reboot
$ dpkg --add-architecture i386
$ apt-get update
$ wget http://download.teamviewer.com/download/teamviewer_i386.deb
$ dpkg -i teamviewer_i386.deb
$ apt-get -f install
$ teamviewer --passwd [PASSWD]

Установка на Debian:
$ apt-get update
$ apt-get install lxde lightdm
$ reboot
$ dpkg --add-architecture i386
$ apt-get update
$ wget http://download.teamviewer.com/download/teamviewer_i386.deb
$ dpkg -i teamviewer_i386.deb
$ apt-get -f install
$ teamviewer --passwd [PASSWD]

Установка на CentOS:
$ yum groupinstall "X Window system"
$ yum install epel-release
$ yum install fluxbox xterm lightdm
$ systemctl set-default graphical.target
$ reboot
$ curl -o TeamViewer_Linux_PubKey.asc -Lk http://www.teamviewer.com/link/?url=354858
$ rpm --import TeamViewer_Linux_PubKey.asc
$ curl -LOk http://download.teamviewer.com/download/teamviewer.i686.rpm
$ yum install teamviewer.i686.rpm
$ teamviewer --passwd [PASSWD]

Также необходимо принять лицензионное соглашение TeamViewer’а, это можно сделать с помощью «Аварийного режима», либо добавить следующие строки в конец файла /opt/teamviewer/config/global.conf:
$ echo "[int32] EulaAccepted = 1" >> /opt/teamviewer/config/global.conf
$ echo "[int32] EulaAcceptedRevision = 6" >> /opt/teamviewer/config/global.conf
$ teamviewer --daemon restart

Следующая команда покажет состояние демона TeamViewer’а и необходимый для подключения девятизначный TeamViewer ID:
$ teamviewer --info

После запуска клиента скачанного тут, нужно ввести TeamViewer ID в поле Partner UD и нажать на кнопку «Connect to partner». Далее TeamViewer запросит пароль: [PASSWD].

Вместо заключения


Вот вроде бы и всё. Надеемся что эта статья поможет пользователям linux-серверов в настройке комфортного и удобного для них окружения.

habr.com

Настройка удалённого доступа к Windows с помощью noVNC / Habr

Это руководство о том, как настроить 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.

WebSockify — это своего рода прокси, который с одной стороны умеет разговаривать с VNC, который у нас на порту 5900, а с другой — умеет транслировать это браузеру через вебсокет, который у нас будет на порту 5901.
noVNC — это просто html-приложение, или как сегодня это называют Single Page Application, которое и будет работать в клиентском браузере и «говорить» с WebSockify на сервере.

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

— MobileVNC, но он платный (10 Евро за устройство)
— Есть библиотека LibVNCServer, которая поддерживает вебсокеты, и теоретически работает под Windows, но я не нашёл ни одного готового сервера под Windows с этой библиотекой.

В этом случае WebSockify уже не будет нужен.

Ставим VNC


Сам VNC протокол стандартизован, поэтому теоретически можно использовать любой VNC сервер.

Сначала я попробовал поставить TightVNC, но у noVNC были с ним какие-то проблемы с аутентификацией. Думаю, что можно было разобраться, но я поставил UltraVNC (осторожно, у них там тонны рекламы, реальные ссылки — внизу страницы) и всё заработало.

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

VNC сервер я поставил на порт 5900. Не забудьте установить пароль на VNC соединение. UltraVNC не даст подсоединиться до тех пор, пока вы не установите пароль.

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

noVNC и WebSockify


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

— распаковываем zip архив noVNC
— распаковываем zip архив WebSockify

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


Теперь запускаем 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:

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


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


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

Поэтому, чтобы печатать по русски на удалённом компьютере:

— на клиенте должна быть выбрана английская раскладка
— на удалённой системе должна быть выбрана русская раскладка


Буфер обмена


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

habr.com

Отправить ответ

avatar
  Подписаться  
Уведомление о