Краткое руководство. Подключение по протоколу SSH и RDP через поток устройств Центра Интернета вещей с помощью приложения прокси Node.js (предварительная версия)Quickstart: Enable SSH and RDP over an IoT Hub device stream by using a Node.js proxy application (preview)

Центр Интернета вещей Microsoft Azure поддерживает потоки устройств, которые сейчас доступны в режиме предварительной версии.Microsoft Azure IoT Hub currently supports device streams as a preview feature.

Потоки устройств Центра Интернета вещей позволяют службам и приложениям устройств безопасным и подходящим методом обмениваться данными с брандмауэром.IoT Hub device streams allow service and device applications to communicate in a secure and firewall-friendly manner.

В этом кратком руководстве описано, как запустить приложение прокси Node.js на стороне службы для направления трафика SSH и RDP (протокол удаленного рабочего стола) на устройство через поток устройств.This quickstart describes the execution of a Node.js proxy application that's running on the service side to enable Secure Shell (SSH) and Remote Desktop Protocol (RDP) traffic to be sent to the device over a device stream. Общие сведения о настройке см. в разделе с примером локального прокси-сервера.For an overview of the setup, see Local Proxy Sample.

На этапе общедоступной предварительной версии пакет SDK для Node.js поддерживает потоки устройств только на стороне службы.During public preview, the Node.js SDK supports device streams on the service side only. Поэтому в этом кратком руководстве даны инструкции по запуску приложения прокси только на стороне службы.As a result, this quickstart covers instructions to run only the service-local proxy application. Сведения о запуске приложения прокси на стороне устройства см. в следующих статьях:To run the device-local proxy application, see:

В этой статье объясняется, как выполнить настройку для протокола SSH (с использованием порта 22) и как изменить настройки для протокола RDP (используется порт 3389).This article describes the setup for SSH (by using port 22) and then describes how to modify the setup for RDP (which uses port 3389). Так как потоки устройств не зависят от приложений и протоколов, этот пример можно изменить для других типов трафика клиент-серверных приложений (обычно путем изменения портов для обмена данными).Because device streams are application- and protocol-agnostic, you can modify the same sample to accommodate other types of client-server application traffic, usually by modifying the communication port.

Использование Azure Cloud ShellUse Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Для работы со службами Azure в Cloud Shell можно использовать bash и PowerShell.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Чтобы запустить Azure Cloud Shell, сделайте вот что:To launch Azure Cloud Shell:

ПараметрOption Пример и ссылкаExample/Link
Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При нажатии кнопки Попробовать код не копируется в Cloud Shell автоматически.Selecting Try It doesn't automatically copy the code to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell, чтобы открыть Cloud Shell в браузере.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. <a href="https://shell.azure.com" title="Запуск Azure Cloud Shell
На портале Azure в правом верхнем углу в строке меню нажмите кнопку Cloud Shell.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Кнопка "Cloud Shell" на портале Azure

Чтобы выполнить код из этой статьи в Azure Cloud Shell, сделайте вот что:To run the code in this article in Azure Cloud Shell:

  1. Запустите Cloud Shell.Launch Cloud Shell.
  2. В блоке кода нажмите кнопку Копировать, чтобы скопировать код.Select the Copy button on a code block to copy the code.
  3. Вставьте код в окно сеанса Cloud Shell, нажав клавиши Ctrl+Shift+V в Windows и Linux или Cmd+Shift+V в macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Нажмите клавишу ВВОД, чтобы выполнить код.Press Enter to run the code.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don’t have an Azure subscription, create a free account before you begin.

Предварительные требованияPrerequisites

  • Предварительная версия потоков устройств сейчас поддерживается только в центрах Интернета вещей, созданных в следующих регионах:The preview of device streams is currently supported only for IoT hubs that are created in the following regions:

    • Центральный регион СШАCentral US
    • Центральная часть США (EUAP)Central US EUAP
  • Для запуска приложения на стороне службы при работе с этим руководством вам понадобится Node.js 10.x.x или более поздней версии на компьютере разработчика.To run the service-local application in this quickstart, you need Node.js v10.x.x or later on your development machine.

    • Скачайте Node.js для нескольких платформ.Download Node.js for multiple platforms.
    • Проверьте текущую версию Node.js на компьютере для разработки, используя следующую команду:Verify the current version of Node.js on your development machine by using the following command:
    node --version
    
  • Чтобы добавить расширение Интернета вещей Azure для Azure CLI в экземпляр Cloud Shell, выполните приведенную ниже команду.Add the Azure IoT Extension for Azure CLI to your Cloud Shell instance by running the following command. Расширение Интернета вещей добавляет в Azure CLI специальные команды Центра Интернета вещей, IoT Edge и Службы подготовки устройств к добавлению в центр Интернета вещей (DPS).The IOT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS)-specific commands to the Azure CLI.

    az extension add --name azure-cli-iot-ext
    
  • Если вы еще не сделали этого, скачайте пример проекта Node.js и извлеките ZIP-архив.If you haven't already done so, download the sample Node.js project and extract the ZIP archive.

Создание Центра Интернета вещейCreate an IoT hub

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, можете пропустить этот шаг.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

В этом разделе описывается создание центра Интернета вещей с помощью портала Azure.This section describes how to create an IoT hub by using the Azure portal.

  1. Войдите на портале Azure.Sign in to the Azure portal.

  2. Выберите Создать ресурс, а затем Интернет вещей.Select Create a resource, and then select Internet of Things.

  3. В списке справа выберите Центр Интернета вещей.In the list at the right, select Iot Hub. Откроется первая страница для создания центра Интернета вещей.The first page for creating an IoT hub opens.

    Создание центра Интернета вещей на портале Azure

    Заполните следующие поля.Fill in the fields:

    a.a. В раскрывающемся списке Подписка выберите нужную подписку для центра Интернета вещей.In the Subscription drop-down list, select the subscription to use for your IoT hub.

    b.b. Для группы ресурсов выполните одно из следующих действий.For Resource Group, do either of the following:

    • Чтобы создать группу ресурсов, щелкните Создать и укажите имя, которое вы хотите использовать.To create a new resource group, select Create new and enter the name you want to use.

    • Чтобы использовать существующую группу, выберите Использовать существующий, а затем группу ресурсов из раскрывающегося списка.To use an existing resource group, select Use existing and then, in the drop-down list, select the resource group.

      Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    c.c. В раскрывающемся списке Регион выберите регион, в котором будет расположен центр Интернета вещей.In the Region drop-down list, select the region in which you want your hub to be located. Выберите регион, который поддерживает функцию "Потоки устройств" центра Интернета вещей (предварительная версия). Это — Центральная часть США или Центральная часть США (EUAP) .Select a region that supports the IoT Hub device streams preview, either Central US or Central US EUAP.

    d.d. В поле Имя центра Интернета вещей введите имя центра Интернета вещей.In the IoT Hub Name box, enter the name for your IoT hub. Оно должно быть глобально уникальным.The name must be globally unique. Если введенное имя доступно, появится зеленая галочка.If the name you enter is available, a green check mark appears.

    Важно!

    Так как центр Интернета вещей будет общедоступен в качестве конечной точки DNS, убедитесь, что в его имени не фигурируют конфиденциальные или персональные сведения.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

  4. Чтобы продолжить создание центра Интернета вещей, выберите Далее: Размер и масштабирование.To continue creating your IoT hub, select Next: Size and scale.

    Настройка параметров размера и масштабирования центра Интернета вещей на портале Azure

    На этой панели вы можете принять настройки по умолчанию и щелкнуть Просмотр и создание внизу страницы.In this pane, you can accept the default settings and select Review + create at the bottom. Можно воспользоваться следующими вариантами:Consider the following options:

    • В раскрывающемся списке Ценовая категория и категория масштабирования выберите один из стандартных уровней (S1, S2, S3) или F1: Уровень "Бесплатный" .In the Pricing and scale tier drop-down list, select one of the standard tiers (S1, S2, or S3) or F1: Free tier. Также этот выбор может основываться на размере вашего парка и характеристиках непотоковых рабочих нагрузок, которые будут выполняться в центре Интернета вещей (например, сообщения телеметрии).This choice can also be guided by the size of your fleet and the non-streaming workloads that you expect in your hub (for example, telemetry messages). Например, для тестирования и оценки можно использовать бесплатный уровень.For example, the free tier is intended for testing and evaluation. Он позволяет подключить к Центру Интернета вещей 500 устройств и отправлять до 8000 сообщений в день.It allows 500 devices to be connected to the IoT hub and up to 8,000 messages per day. Для каждой подписки Azure можно создать один центр Интернета вещей на уровне "Бесплатный".Each Azure subscription can create one IoT hub in the free tier.

    • Для параметра Число единиц центра Интернета вещей этот выбор зависит от характеристик непотоковых рабочих нагрузок, которые будут выполняться в центре Интернета вещей.For Number of IoT Hub units: This choice depends on non-streaming workload you expect in your hub. Сейчас можно выбрать 1.You can select 1 for now.

    Дополнительную информацию о параметрах уровня см. в статье Choose the right IoT hub tier (Выбор правильного уровня центра Интернета вещей).For more information about tier options, see Choose the right IoT hub tier.

  5. Щелкните вкладку Просмотр и создание, чтобы просмотреть возможные варианты. Панель, которая откроется, будет выглядеть примерно следующим образом.To review your choices, select the Review + create tab. The pane that opens is similar to the following:

    Сведения о создании центра Интернета вещей

  6. Щелкните Создать, чтобы создать центр Интернета вещей.To create your new IoT hub, select Create. Процесс займет несколько минут.The process takes a few minutes.

Регистрация устройстваRegister a device

Если вы ознакомились с Кратким руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, можете пропустить этот шаг.If you completed Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

Устройство должно быть зарегистрировано в Центре Интернета вещей, прежде чем оно сможет подключиться.A device must be registered with your IoT hub before it can connect. При изучении этого раздела для регистрации имитированного устройства используется Azure Cloud Shell.In this section, you use Azure Cloud Shell to register a simulated device.

  1. Чтобы создать удостоверение устройства, выполните приведенные ниже команды в Cloud Shell.To create the device identity, run the following command in Cloud Shell:

    Примечание

    • Замените заполнитель YourIoTHubName именем созданного центра Интернета вещей.Replace the YourIoTHubName placeholder with the name you choose for your IoT hub.
    • Используйте имя MyDevice, как показано в примере.Use MyDevice, as shown. Это имя, присвоенное зарегистрированному устройству.It's the name given for the registered device. Если вы выбрали другое имя для устройства, используйте его при работе с этой статьей и обновите имя устройства в примерах приложений перед их запуском.If you choose a different name for your device, use that name throughout this article, and update the device name in the sample applications before you run them.
    az iot hub device-identity create --hub-name YourIoTHubName --device-id MyDevice
    
  2. Чтобы разрешить внутреннему приложению подключаться к центру Интернета вещей и получать сообщения, вам необходима строка подключения к службе.To enable the back-end application to connect to your IoT hub and retrieve the messages, you also need a service connection string. Получите эту строку для своего центра Интернета вещей с помощью следующей команды.The following command retrieves the string for your IoT hub:

    Примечание

    Замените заполнитель YourIoTHubName именем созданного центра Интернета вещей.Replace the YourIoTHubName placeholder with the name you choose for your IoT hub.

    az iot hub show-connection-string --policy-name service --name YourIoTHubName
    

    Запишите возвращаемое значение. Оно вам понадобится для последующего использования в этом кратком руководстве.Note the returned value for later use in this quickstart. Это должно выглядеть следующим образом:It looks like the following example:

    "HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}"

SSH-подключение к устройству через потоки устройствSSH to a device via device streams

В этом разделе показано, как установить сквозной поток для туннелирования трафика SSH.In this section, you establish an end-to-end stream to tunnel SSH traffic.

Запуск приложения локального прокси-сервера устройстваRun the device-local proxy application

Как упоминалось ранее, пакет SDK Node.js для Центра Интернета вещей поддерживает потоки устройств только на стороне службы.As mentioned earlier, the IoT Hub Node.js SDK supports device streams on the service side only. Для запуска приложения на стороне устройства используйте приложение прокси, которое описано в следующих кратких руководствах:For the device-local application, use a device proxy application that's available in one of the following quickstarts:

Прежде чем перейти к следующему шагу, убедитесь, что приложение прокси на стороне устройства запущено.Before you proceed to the next step, ensure that the device-local proxy application is running.

Запуск приложения локального прокси-сервера службыRun the service-local proxy application

Когда приложение прокси на стороне устройства будет запущено, запустите приложение прокси на стороне службы, написанное на Node.js, выполнив следующее:With the device-local proxy application running, run the service-local proxy application that's written in Node.js by doing the following:

  1. В качестве переменных среды укажите учетные данные службы, идентификатор целевого устройства, на котором запущена управляющая программа SSH, и номер порта для прокси-сервера, который запущен на устройстве.For environment variables, provide your service credentials, the target device ID where the SSH daemon runs, and the port number for the proxy that's running on the device.

    # In Linux
    export IOTHUB_CONNECTION_STRING="<provide_your_service_connection_string>"
    export STREAMING_TARGET_DEVICE="MyDevice"
    export PROXY_PORT=2222
    
    # In Windows
    SET IOTHUB_CONNECTION_STRING=<provide_your_service_connection_string>
    SET STREAMING_TARGET_DEVICE=MyDevice
    SET PROXY_PORT=2222
    

    Измените приведенные выше значения, чтобы сопоставить идентификатор устройства и строку подключения.Change the preceding values to match your device ID and connection string.

  2. Перейдите к каталогу Quickstarts/device-streams-service в папке распакованного проекта и запустите приложение прокси на стороне службы.Go to the Quickstarts/device-streams-service directory in your unzipped project folder, and run the service-local proxy application.

    cd azure-iot-samples-node-streams-preview/iot-hub/Quickstarts/device-streams-service
    
    # Install the preview service SDK, and other dependencies
    npm install azure-iothub@streams-preview
    npm install
    
    # Run the service-local proxy application
    node proxy.js
    

SSH-подключение к устройству через потоки устройствSSH to your device via device streams

В Linux запустите SSH, используя ssh $USER@localhost -p 2222 в терминале.In Linux, run SSH by using ssh $USER@localhost -p 2222 on a terminal. В Windows используйте клиент SSH, с которым вы работаете (например PuTTY).In Windows, use your favorite SSH client (for example, PuTTY).

Вывод на консоль на стороне службы после установления сеанса SSH (приложение прокси на стороне службы прослушивает порт 2222):Console output on the service-local after SSH session is established (the service-local proxy application listens on port 2222):

Выходные данные терминала SSH

Вывод на консоль клиентского приложения SSH (клиент SSH связывается с управляющей программой SSH, подключаясь к порту 22, который прослушивается приложением прокси на стороне службы).Console output of the SSH client application (SSH client communicates to SSH daemon by connecting to port 22, which the service-local proxy application is listening on):

Вывод клиента SSH

RDP-подключение к устройству через потоки устройствRDP to your device via device streams

Теперь с помощью клиентского приложения RDP подключитесь к прокси-серверу службы через порт 2222 (это произвольный порт, который вы выбрали ранее).Now use your RDP client application and connect to the service proxy on port 2222, an arbitrary port that you chose earlier.

Примечание

Убедитесь, что прокси-сервер устройства правильно настроен для RDP и порта RDP 3389.Ensure that your device proxy is configured correctly for RDP and configured with RDP port 3389.

Подключение клиента RDP к приложению прокси на стороне службы

Очистка ресурсовClean up resources

Можно сохранить созданные ресурсы и повторно использовать их при выполнении задач в следующей рекомендуемой статье, если вы планируете перейти к ней.If you plan to continue to the next recommended article, you can keep and reuse the resources you've already created.

Если нет, вы можете удалить ресурсы Azure, созданные в рамках этой статьи, чтобы избежать расходов.Otherwise, to avoid charges, you can delete the Azure resources that you created in this article.

Важно!

Удаление группы ресурсов — процесс необратимый.Deleting a resource group is irreversible. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления.The resource group and all the resources contained in it are permanently deleted. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.Make sure that you don't accidentally delete the wrong resource group or resources. Если вы создали центр Интернета вещей в группе ресурсов, содержащей ресурсы, которые нужно сохранить, удалите только ресурс Центра Интернета вещей, не удаляя всю группу ресурсов.If you created the IoT hub inside an existing resource group that contains resources that you want to keep, delete only the IoT hub resource itself, not the resource group.

Удаление группы ресурсов по имени:To delete a resource group by name:

  1. Войдите на портал Azure и щелкните Группы ресурсов.Sign in to the Azure portal, and then select Resource groups.

  2. Введите в поле Фильтровать по имени имя группы ресурсов, содержащей центр Интернета вещей.In the Filter by name box, enter the name of the resource group that contains your IoT hub.

  3. В списке результатов справа от своей группы ресурсов щелкните многоточие ( ... ), а затем выберите Удалить группу ресурсов.In the result list, to the right of your resource group, select the ellipsis (...), and then select Delete resource group.

    Кнопка "Удалить группу ресурсов"

  4. Чтобы подтвердить удаление, повторно введите имя группы ресурсов и выберите Удалить.To confirm the deletion of the resource group, reenter the resource group name, and then select Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all its contained resources are deleted.

Дополнительная информацияNext steps

Из этого краткого руководства вы узнали, как настроить центр Интернета вещей, зарегистрировать устройство и развернуть приложение прокси на стороне службы для включения RDP и SSH на устройстве Интернета вещей.In this quickstart, you've set up an IoT hub, registered a device, and deployed a service proxy application to enable RDP and SSH on an IoT device. Трафик RDP и SSH будет туннелироваться через поток устройств и центр Интернета вещей.The RDP and SSH traffic will be tunneled through a device stream through the IoT hub. Это избавляет от необходимости прямого подключения к устройству.This process eliminates the need for direct connectivity to the device.

Дополнительные сведения о потоках устройств см. в следующей статье:To learn more about device streams, see:

IoT Hub Device Streams (preview) (Потоки устройств (предварительная версия))Device streams overview