Краткое руководство. Подключение по протоколу SSH или RDP через поток устройств Центра Интернета вещей с помощью прокси-приложения C#Quickstart: SSH/RDP over an IoT Hub device stream using a C# 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. Это краткое руководство включает две программы C#, которые отправляют трафик приложения клиента и сервера (например, SSH и RDP) через поток устройств, установленный через Центр Интернета вещей.This quickstart guide involves two C# programs that enable client/server application traffic (such as SSH and RDP) to be sent over a device stream established through IoT Hub. Общие сведения о настройке см. на странице с примером локального прокси-приложения для SSH или RDP.See Local Proxy Sample for SSH or RDP for an overview of the setup.

Сначала мы опишем настройку для SSH (используя порт 22).We first describe the setup for SSH (using port 22). Затем опишем, как изменить порт настройки для RDP.We then describe how to modify the setup's port for RDP. Так как потоки устройств не зависят от приложений и протоколов, тот же пример можно изменить для размещения других типов трафика приложений.Since device streams are application and protocol agnostic, the same sample can be modified to accommodate other types of application traffic. Обычно это подразумевает только изменение порта связи на тот, который используется нужным приложением.This usually only involves changing the communication port to the one used by the intended application.

Принцип работыHow it works

На рисунке, приведенном ниже показано, как программы локального прокси-сервера устройств и служб в этом примере обеспечивают сквозное подключение между клиентом SSH и управляющей программой SSH.Figure below illustrates the setup of how the device- and service-local proxy programs in this sample will enable end-to-end connectivity between SSH client and SSH daemon. В данном случае предполагается, что управляющая программа запущена на том же устройстве, что и локальный прокси-сервер устройства.Here, we assume that the daemon is running on the same device as the device-local proxy.

Настройка локального прокси-приложения

  1. Локальный прокси-сервер службы подключается к центру Интернета вещей и инициирует поток устройств в целевое устройство с помощью кода устройства.Service-local proxy connects to IoT hub and initiates a device stream to the target device using its device ID.

  2. Локальный прокси-сервер устройства завершает подтверждение инициации потоковой передачи и устанавливает сквозной потоковый туннель через конечную точку потоковой передачи Центра Интернета вещей на стороне службы.Device-local proxy completes the stream initiation handshake and establishes an end-to-end streaming tunnel through IoT Hub's streaming endpoint to the service side.

  3. Локальное прокси-приложение устройства подключается к управляющей программе SSH (SSHD), прослушивающей порт 22 на устройстве (это можно настроить, как описано ниже в разделе о запуске локального прокси-приложения на устройстве).Device-local proxy connects to the SSH daemon (SSHD) listening on port 22 on the device (this port is configurable, as described in the Run the Device Local Proxy section.

  4. Локальное прокси-приложение службы ожидает новые SSH-подключения от пользователя, прослушивая назначенный порт (в этом случае — порт 2222), который также можно настроить, как описано ниже в разделе о запуске локального прокси-приложения на устройстве.Service-local proxy awaits for new SSH connections from the user by listening on a designated port which in this case is port 2222 (this is also configurable, as described in the Run The Service Local Proxy section. Когда пользователь подключается через клиент SSH, туннель позволяет обмениваться трафиком приложения между клиентом SSH и служебными программами.When user connects via SSH client, the tunnel enables application traffic to be exchanged between the SSH client and service programs.

Примечание

Трафик SSH, передаваемый по потоку, будет туннелироваться через конечную точку потоковой передачи Центра Интернета вещей, а не напрямую между службой и устройством.SSH traffic being sent over the stream will be tunneled through IoT Hub's streaming endpoint rather than being sent directly between service and device. Дополнительные сведения см. в разделе о преимуществах потоков устройств.For more information, see the section on Device streams benefits.

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

Azure Cloud Shell — это интерактивная оболочка среды, размещенная в Azure и работающая в браузере.Azure Cloud Shell is an interactive shell environment hosted in Azure and used through your browse. Azure Cloud Shell позволяет использовать оболочку bash или PowerShell, чтобы запускать разнообразные инструменты для работы со службами Azure.Azure Cloud Shell allows you to use either bash or PowerShell shells to run a variety of tools to work with Azure services. Azure Cloud Shell поставляется со встроенными командами, с помощью которых можно запускать код в данной статье, не устанавливая дополнительные компоненты в локальной среде.Azure Cloud Shell comes pre-installed with the commands to allow you to run the content of this article without having to install anything on your local environment.

Для выполнения кода из этой статьи в Azure Cloud Shell откройте сеанс Cloud Shell, скопируйте блок кода с помощью кнопки Копировать и вставьте его в сеанс Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.To run any code contained in this article on Azure Cloud Shell, open a Cloud Shell session, use the Copy button on a code block to copy the code, and paste it into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS. Вставленный текст не выполняется автоматически, поэтому нажмите клавишу ВВОД для выполнения кода.Pasted text is not automatically executed, so press Enter to run code.

Запустить Azure Cloud Shell можно следующим образом.You can launch Azure Cloud Shell with:

Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. При этом не выполняется автоматическое копирование текста в Cloud Shell.This doesn't automatically copy text to Cloud Shell. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
В браузере перейдите по адресу shell.azure.com.Open shell.azure.com 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

Примеры приложений, запускаемые в рамках этого краткого руководства, написаны на языке C#.The two sample applications you run in this quickstart are written using C#. На компьютере, на котором ведется разработка, необходимо установить пакет SDK для .NET Core версии 2.1.0 или более поздней.You need the .NET Core SDK 2.1.0 or greater on your development machine.

Пакет SDK для .NET Core, предназначенный для нескольких платформ, можно скачать из раздела, посвященного .NET.You can download the .NET Core SDK for multiple platforms from .NET.

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

dotnet --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

Скачайте пример проекта C# по ссылке https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/master.zip и извлеките ZIP-архив.Download the sample C# project from https://github.com/Azure-Samples/azure-iot-samples-csharp/archive/master.zip and extract the ZIP archive.

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

В этом разделе описывается создание центра Интернета вещей с помощью портала 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, убедитесь, что в его имени не фигурируют конфиденциальные или персональные сведения.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. Щелкните Далее: 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

Устройство должно быть зарегистрировано в Центре Интернета вещей, прежде чем оно сможет подключиться.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 choose 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. Выполните следующую команду в Azure Cloud Shell, чтобы получить строку подключения зарегистрированного устройства:Run the following commands in Azure Cloud Shell to get the device connection string for the device you just registered:

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

    az iot hub device-identity show-connection-string --hub-name YourIoTHubName --device-id MyDevice --output table
    

    Запишите строку подключения устройства, которая выглядит, как на следующем примере.Make a note of the device connection string, which looks like the following example:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyDevice;SharedAccessKey={YourSharedAccessKey}

    Это значение понадобится позже в рамках этого краткого руководства.You use this value later in the quickstart.

  3. Понадобится также строка подключения к службе из Центра Интернета вещей, чтобы включить приложение на стороне службы для подключения к Центру Интернета вещей и установить потоки устройств.You also need the service connection string from your IoT hub to enable the service-side application to connect to your IoT hub and establish a device stream. Следующая команда получает это значение для Центра Интернета вещей:The following command retrieves this value for your IoT hub:

    YourIoTHubName. Замените этот заполнитель именем вашего Центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you choose 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

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

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

Перейдите к device-streams-proxy/device в распакованной папке проекта.Navigate to device-streams-proxy/device in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя аргументаArgument name Значение аргументаArgument value
deviceConnectionString Строка подключения созданного ранее устройства.The connection string of the device you created earlier.
targetServiceHostName IP-адрес, на котором прослушивается сервер SSH (это будет localhost, если IP-адрес тот, на котором запущен локальный прокси-сервер устройства).The IP address where SSH server listens on (this would be localhost if the same IP where device-local proxy is running).
targetServicePort Порт, используемый протоколом приложения (по умолчанию это будет порт 22 для SSH).The port used by your application protocol (by default, this would be port 22 for SSH).

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-proxy/device/

# Build the application
dotnet build

# Run the application
# In Linux/MacOS
dotnet run $deviceConnectionString localhost 22

# In Windows
dotnet run %deviceConnectionString% localhost 22

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

Перейдите к device-streams-proxy/service в распакованной папке проекта.Navigate to device-streams-proxy/service in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя параметраParameter name Значение параметраParameter value
iotHubConnectionString Строка подключения к службе Центра Интернета вещей.The service connection string of your IoT Hub.
deviceId Идентификатор устройства, созданного ранее.The identifier of the device you created earlier.
localPortNumber Локальный порт, к которому будет подключаться клиент SSH.A local port where your SSH client will connect to. В этом примере мы используем порт 2222, но его можно заменить другими произвольными числами.We use port 2222 in this sample, but you could modify this to other arbitrary numbers.

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-proxy/service/

# Build the application
dotnet build

# Run the application
# In Linux/MacOS
dotnet run $serviceConnectionString MyDevice 2222

# In Windows
dotnet run %serviceConnectionString% MyDevice 2222

Запуск клиента SSHRun SSH client

Теперь с помощью программы клиента SSH подключитесь к локальному прокси-серверу службы на порте 2222 (вместо подключения напрямую через управляющую программу SSH).Now use your SSH client program and connect to service-local proxy on port 2222 (instead of the SSH daemon directly).

ssh <username>@localhost -p 2222

На этом этапе откроется командная строка входа SSH для ввода учетных данных.At this point, you will be presented with the SSH login prompt to enter your credentials.

Вывод на консоль на стороне службы (локальный прокси-сервер службы прослушивает порт 2222):Console output on the service-side (the service-local proxy listens on port 2222):

Выходные данные локального прокси-приложения службы

Вывод на консоль на локальном прокси-сервере устройства, который подключается к управляющей программе SSH по адресу IP_address:22:Console output on the device-local proxy which connects to the SSH daemon at IP_address:22:

Вывод локального прокси-приложения на устройстве

Вывод на консоль клиентской программы 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):

Выходные данные клиентской программы SSH

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

Настройка для RDP очень похожа на настройку SSH (описанную выше).The setup for RDP is very similar to SSH (described above). Нам нужно использовать вместо этого IP-адрес назначения RDP и порт 3389, а также использовать клиент RDP (вместо клиента SSH).We basically need to use the RDP destination IP and port 3389 instead and use RDP client (instead of SSH client).

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

Перейдите к device-streams-proxy/device в распакованной папке проекта.Navigate to device-streams-proxy/device in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя аргументаArgument name Значение аргументаArgument value
DeviceConnectionString Строка подключения созданного ранее устройства.The connection string of the device you created earlier.
targetServiceHostName Имя узла или IP-адрес, на котором включен сервер RDP (это будет localhost, если IP-адрес тот, на котором запущен локальный прокси-сервер устройства).The hostname or IP address where RDP server runs (this would be localhost if the same IP where device-local proxy is running).
targetServicePort Порт, используемый протоколом приложения (по умолчанию это будет порт 3389 для RDP).The port used by your application protocol (by default, this would be port 3389 for RDP).

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-proxy/device

# Run the application
# In Linux/MacOS
dotnet run $DeviceConnectionString localhost 3389

# In Windows
dotnet run %DeviceConnectionString% localhost 3389

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

Перейдите к device-streams-proxy/service в распакованной папке проекта.Navigate to device-streams-proxy/service in your unzipped project folder. Вам понадобятся следующие сведения.You will need the following information handy:

Имя параметраParameter name Значение параметраParameter value
iotHubConnectionString Строка подключения к службе Центра Интернета вещей.The service connection string of your IoT Hub.
deviceId Идентификатор устройства, созданного ранее.The identifier of the device you created earlier.
localPortNumber Локальный порт, к которому будет подключаться клиент SSH.A local port where your SSH client will connect to. В этом примере мы используем порт 2222, но его можно заменить другими произвольными числами.We use port 2222 in this sample, but you could modify this to other arbitrary numbers.

Скомпилируйте и запустите код, как показано:Compile and run the code as follows:

cd ./iot-hub/Quickstarts/device-streams-proxy/service/

# Build the application
dotnet build

# Run the application
# In Linux/MacOS
dotnet run $serviceConnectionString MyDevice 2222

# In Windows
dotnet run %serviceConnectionString% MyDevice 2222

Запуск клиента RDPRun RDP client

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

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

Очистка ресурсов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

В рамках этого краткого руководства вы настроили Центр Интернета вещей, зарегистрировали устройство, развернули программу локальных прокси-серверов устройств и служб, чтобы установить поток устройств через Центр Интернета вещей, а также использовали прокси-серверы для туннелирования трафика SSH и RDP.In this quickstart, you have set up an IoT hub, registered a device, deployed a device- and a service-local proxy program to establish a device stream through IoT Hub, and used the proxies to tunnel SSH or RDP traffic. Та же парадигма может размещать другие протоколы клиента или сервера (где сервер запущен на устройстве, например на управляющей программе SSH).The same paradigm can accommodate other client/server protocols (where server runs on the device, e.g., SSH daemon).

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

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