本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在安全隧道中多路复用多个数据流
您可以对使用多个连接或端口的设备使用多路复用功能。当您需要与远程设备建立多个连接以解决任何问题时,也可以使用多路复用功能。例如,对于需要发送多个 HTTP 和 SSH 数据流的 Web 浏览器,可以使用此功能。通过多路复用隧道将来自两个数据流的应用程序数据同时发送到设备。
使用案例示例
假设您需要连接到设备上的 Web 应用程序来更改某些联网参数,同时通过终端发出 shell 命令,以验证设备是否使用新的联网参数正常运行。在这种情况下,您可能需要通过 HTTP 和 SSH 连接到设备并传输两个并行数据流,才能同时访问 Web 应用程序和终端。通过多路复用功能,这两个独立的流可以同时通过同一隧道传输。
如何设置多路复用隧道
以下流程将指导您如何设置多路复用隧道,以便使用需要连接到多个端口的应用程序对设备进行故障排除。您将设置一个隧道,其中包含两个多路复用流:一个 HTTP 流和一个 SSH 流。
-
(可选)创建配置文件
您可以选择使用配置文件来配置源和目标设备。如果您的端口映射可能会经常发生更改,请使用配置文件。如果您希望使用 CLI 显式指定端口映射,或者如果您不需要在指定侦听端口上启动本地代理,则可跳过此步骤。有关如何使用配置文件的更多信息,请参阅中的通过--config 设置的 GitHub选项
。 -
在源设备上,在将运行本地代理的文件夹中,创建一个名为
Config
的配置文件夹。在此文件夹中,使用以下内容创建一个名为SSHSource.ini
的文件:HTTP1 =
5555
SSH1 =3333
-
在目标设备上,在将运行本地代理的文件夹中,创建一个名为
Config
的配置文件夹。在此文件夹中,使用以下内容创建一个名为SSHDestination.ini
的文件:HTTP1 =
80
SSH1 =22
-
-
打开隧道
使用
OpenTunnel
API 操作或open-tunnel
CLI 命令打开隧道。通过将SSH1
和指定HTTP1
为服务以及与您的远程设备对应 Amazon IoT 的事物的名称来配置目的地。您的 SSH 和 HTTP 应用程序正在此远程设备上运行。您必须已经在 Amazon IoT 注册表中创建了物联网事物。有关更多信息,请参阅 如何使用注册表管理事物。aws iotsecuretunneling open-tunnel \ --destination-config thingName=
RemoteDevice1
,services=HTTP1,SSH1运行此命令将生成源和目标访问令牌,您将使用这些令牌运行本地代理。
{ "tunnelId": "
b2de92a3-b8ff-46c0-b0f2-afa28b00cecd
", "tunnelArn": "arn:aws:iot:us-west-2
:431600097591
:tunnel/b2de92a3-b8ff-46c0-b0f2-afa28b00cecd
", "sourceAccessToken":source_client_access_token
, "destinationAccessToken":destination_client_access_token
} -
配置和启动本地代理
在运行本地代理之前,请先设置 Amazon IoT 设备客户端,或者从中下载本地代理源代码GitHub
并针对您选择的平台进行构建。之后,您可以启动目标和源本地代理以连接到安全隧道。有关配置和使用本地代理的更多信息,请参阅如何使用本地代理。 注意
在源设备上,如果您不使用任何配置文件或使用 CLI 指定端口映射,则仍可以使用相同的命令来运行本地代理。在源模式下,本地代理将自动为您选取要使用的可用端口和映射。
现在可以通过多路复用隧道同时传输来自 SSH 和 HTTP 连接的应用程序数据。如下面的地图中所示,服务标识符充当可读格式,用于转换源设备和目标设备之间的端口映射。利用此配置,安全隧道将来自源设备上的端口 5555
的所有传入 HTTP 流量转发到目标设备上的端口 80
,并将来自端口 3333
的所有传入 SSH 流量转发到目标设备上的端口 22
。