Краткое руководство. SSH/RDP через потоки устройств Центра Интернета вещей с помощью приложения прокси Node.js (предварительная версия)Quickstart: SSH/RDP over IoT Hub device streams using 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 guide describes execution of a Node.js proxy application running on the service side to enable SSH and RDP traffic to be sent to the device over a device stream. См. общие сведения о настройке.See here for an overview of the setup. На этапе предварительной версии пакет SDK для Node.js поддерживает только потоки устройств на стороне службы.During public preview, Node.js SDK only supports device streams on the service side. Это краткое руководство включает только инструкции по запуску прокси-сервера на стороне службы.As a result, this quickstart guide only covers instructions to run the service-local proxy. Вам следует запустить сопутствующий прокси-сервер на стороне устройства, который описан в кратких руководствах по C и C#.You should run an accompanying device-local proxy which is available in C quickstart or C# quickstart guides.

Сначала мы опишем настройку для SSH (используя порт 22).We first describe the setup for SSH (using port 22). Затем опишем, как изменить настройку для RDP (используя порт 3389).We then describe how to modify the setup for RDP (which uses port 3389). Так как потоки устройств не зависят от приложений и протоколов, тот же пример можно изменить для размещения других типов трафика клиент-серверных приложений (обычно путем изменения портов для обмена данными).Since device streams are application and protocol agnostic, the same sample can be modified to accommodate other types of client/server application traffic (usually by modifying the communication port).

Открытие Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. В Cloud Shell предварительно установлены и настроены общие инструменты Azure для использования с вашей учетной записью.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Нажмите кнопку Копировать, чтобы скопировать код. Вставьте его в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить код.Select Copy to copy the code, paste it in Cloud Shell, and then press Enter to run it. Cloud Shell можно открыть разными способами:There are a few ways to open Cloud Shell:

Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Откройте Cloud Shell в браузере.Open Cloud Shell in your browser. Запуск кнопки Azure Cloud ShellLaunch Azure Cloud Shell button
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Кнопка "Cloud Shell" на портале Azure

Если у вас еще нет подписки 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 only supported for IoT Hubs created in the following regions:

  • Центральная часть СШАCentral US
  • Центральная часть США (EUAP)Central US EUAP

Для запуска приложения на стороне службы в этом руководстве вам понадобится Node.js версии 4.x.x и выше на компьютере разработчика.To run the service-local application in this quickstart you need Node.js v4.x.x or later on your development machine.

Node.js, предназначенный для нескольких платформ, можно скачать здесь: nodejs.org.You can download Node.js for multiple platforms from nodejs.org.

Текущую версию Node.js на компьютере, на котором ведется разработка, можно проверить, используя следующую команду:You can verify the current version of Node.js on your development machine using the following command:

node --version

Выполните следующую команду, чтобы добавить расширение Интернета вещей Microsoft Azure для Azure CLI в экземпляр Cloud Shell.Run the following command to add the Microsoft Azure IoT Extension for Azure CLI to your Cloud Shell instance. Расширение Интернета вещей добавляет в Azure CLI специальные команды Центра Интернета вещей, IoT Edge и службы подготовки устройств Интернета вещей (DPS).The IOT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS) specific commands to Azure CLI.

az extension add --name azure-cli-iot-ext

Если вы еще не сделали это, скачайте пример проекта Node.js по адресу https://github.com/Azure-Samples/azure-iot-samples-node/archive/streams-preview.zip и извлеките ZIP-архив.If you haven't already done so, download the sample Node.js project from https://github.com/Azure-Samples/azure-iot-samples-node/archive/streams-preview.zip 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 using the Azure portal.

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

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

  3. Нажмите кнопку Центр Интернета вещей в списке справа.Click Iot Hub from the list on the right. Появится первый экран для создания Центра Интернета вещей.You see the first screen for creating an IoT hub.

    Снимок экрана создания концентратора на портале Azure

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

    Подписка: Выберите нужную подписку для Центра Интернета вещей.Subscription: Select the subscription to use for your IoT hub.

    Группа ресурсов. Создайте новую группу ресурсов или выберите существующую.Resource Group: You can create a new resource group or use an existing one. Чтобы создать новую, выберите Создать и введите нужное имя.To create a new one, click Create new and fill in the name you want to use. Чтобы использовать существующую группу, щелкните Использовать существующий и выберите группу ресурсов из раскрывающегося списка.To use an existing resource group, click Use existing and select the resource group from the dropdown list. Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    Регион. Выберите регион, в котором будет расположен Центр Интернета вещей.Region: This is 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.

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

    Важно!

    Центр Интернета вещей будет общедоступным в качестве конечной точки DNS, поэтому не используйте конфиденциальную информацию, когда присваиваете ему имя.The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

  4. Щелкните Далее: Size and scale (Далее: размер и масштаб), чтобы продолжить создание Центра Интернета вещей.Click Next: Size and scale to continue creating your IoT hub.

    Снимок экрана, где показаны параметры размера и масштаба для нового Центра Интернета вещей на портале Azure

    На этом экране можно оставить значения по умолчанию и просто выбрать Review + create (Просмотреть и создать) внизу.On this screen, you can take the defaults and just click Review + create at the bottom.

    Ценовая категория и категория масштабирования. Убедитесь, что выбран один стандартный (S1, S2, S3) или бесплатный (F1) уровень.Pricing and scale tier: Ensure you select one of the standard (S1, S2, S3) or the Free (F1) tier. Также этот выбор может основываться на размере вашего парка и характеристиках непотоковых рабочих нагрузок, которые будут выполняться в Центре Интернета вещей (например, сообщения телеметрии).This choice can also be guided by the size of your fleet and the non-streaming workloads you expect in your hub (e.g., 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.

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

    Дополнительные сведения о других параметрах уровня см. в статье Масштабирование решения для Центра Интернета вещей.For details about the other tier options, see Choosing the right IoT Hub tier.

  5. Нажмите кнопку Review + create (Просмотреть и создать), чтобы просмотреть выбранные параметры.Click Review + create to review your choices. Отобразится примерно следующий экран.You see something similar to this screen.

    Снимок экрана, где показана информация для создания центра Интернета вещей

  6. Нажмите кнопку Создать, чтобы создать центр Интернета вещей.Click Create to create your new IoT hub. Создание центра занимает несколько минут.Creating the hub takes a few minutes.

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

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, можете пропустить этот шаг.If you completed the previous 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 quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Выполните приведенные ниже команды в Azure Cloud Shell, чтобы создать удостоверение устройства.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyDevice. Это имя, присвоенное зарегистрированному устройству.MyDevice: This is the name given for the registered device. Используйте имя MyDevice, как показано в примере.Use MyDevice as shown. Если вы выбрали другое имя для устройства, используйте его при работе с этим руководством и обновите имя устройства в примерах приложений перед их запуском.If you choose a different name for your device, you will also need to 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. Чтобы разрешить внутреннему приложению подключаться к Центру Интернета вещей и получать сообщения, вам необходима строка подключения к службе.You also need a service connection string to enable the back-end application to connect to your IoT hub and retrieve the messages. Следующая команда извлекает строку подключения службы для Центра Интернета вещей:The following command retrieves the service connection string for your IoT hub:

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

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

    Запомните или запишите возвращаемое значение, которое выглядит следующим образом:Make a note of the returned value, which looks like this:

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

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

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

Как упоминалось ранее, пакет SDK для Node.js Центра Интернета вещей поддерживает только потоки устройств на стороне службы.As mentioned earlier, IoT Hub Node.js SDK only supports device streams on the service side. Для запуска приложения на стороне устройства используйте сопутствующие программы прокси устройства, которые описаны в кратких руководствах по C и C#.For device-local application, use the accompanying device proxy programs available in C quickstart or C# quickstart guides. Прежде чем перейти к следующему шагу, убедитесь, что прокси-сервер на стороне устройства запущен.Ensure the device-local proxy is running before proceeding to the next step.

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

Если прокси-сервер на стороне устройства запущен, выполните следующие действия, чтобы запустить прокси-сервер на стороне службы в Node.js.Assuming that the device-local proxy is running, follow the steps below to run the service-local proxy written in Node.js.

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

    # 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 values above to match your device ID and connection string.

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

    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 using ssh $USER@localhost -p 2222 on a terminal. В Windows используйте клиент SSH, с которым вы работаете (например, PuTTY).In Windows, use your favorite SSH client (e.g., PuTTY).

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

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

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

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

Примечание

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

Замещающий текстAlt text

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

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

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

Важно!

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

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

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

  2. Введите в текстовое поле Фильтровать по имени... имя группы ресурсов, содержащей Центр Интернета вещей.In the Filter by name... textbox, type the name of the resource group containing your IoT Hub.

  3. Справа от своей группы ресурсов в списке результатов щелкните ..., а затем выберите Удалить группу ресурсов.To the right of your resource group in the result list, click ... then Delete resource group.

    Delete (Удалить)

  4. Подтвердите операцию удаления группы ресурсов.You will be asked to confirm the deletion of the resource group. Еще раз введите имя группы ресурсов для подтверждения и нажмите кнопку Удалить.Type the name of your resource group again to confirm, and then click Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all of its contained resources are deleted.

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

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

Используйте приведенные ниже ссылки для получения дополнительных сведений о потоках устройства:Use the links below to learn more about device streams:

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