打开隧道并启动与远程设备的 SSH 会话
在本教程中,您将打开一个隧道并使用它启动 SSH 会话到远程设备。远程设备位于防火墙后面,由于防火墙会阻止所有入站流量,所以 SSH 会话无法直接进入设备。在开始之前,请确保您了解如何在 Amazon IoT 注册表中注册设备和将设备连接到 Amazon IoT 设备网关。
先决条件
打开隧道
如果在调用 OpenTunnel
时配置目标,则安全隧道会通过 MQTT 和 MQTT 预留主题 ($aws/things/RemoteDeviceA/tunnels/notify
) 将目标客户端访问令牌传送到远程设备。有关更多信息,请参阅 保留的主题。收到 MQTT 消息后,远程设备上的 IoT 代理会以目标模式启动本地代理。如果要通过另一种方法将目标客户端访问令牌传送到远程设备,则可以省略目标配置。有关更多信息,请参阅 配置远程设备和使用 IoT 代理。
在控制台中打开隧道
-
在 Amazon IoT 控制台
中导航到 Manage(管理),然后选择 Tunnels(隧道)。 -
选择 Create tunnel(创建隧道)。
-
输入隧道描述、要打开隧道的事物名称、要使用的服务(例如 SSH 或 FTP)、隧道超时持续时间以及采用键值对形式(帮助识别资源)的资源标签。
-
下载源和目标的客户端访问令牌。选择 Done(完成)之后,令牌将无法下载。
-
选择 Done (完成)。
启动本地代理
在笔记本电脑上打开终端,复制源客户端访问令牌,然后在源模式下使用它来启动本地代理。在以下命令中,本地代理配置用以侦听端口 5555 上的新连接。
./localproxy -r us-east-1 -s 5555 -t
source-client-access-token
此命令中的Amazon Web Services 区域必须与创建隧道的Amazon Web Services 区域相同。
- -r
-
指定创建隧道的Amazon Web Services 区域。
- -s
-
指定代理应连接到的端口。
- -t
-
指定客户端令牌文本。
如果收到以下错误,请设置 CA 路径。有关信息,请参阅 GitHub
Could not perform SSL handshake with proxy server: certificate verify
failed
启动 SSH 会话
打开另一个终端并使用以下命令通过连接到端口 5555 上的本地代理来启动新的 SSH 会话。
ssh username
@localhost -p
5555
系统可能会提示您输入 SSH 会话的密码。完成 SSH 会话后,键入 exit
以关闭会话。
关闭隧道
-
打开 Amazon IoT 控制台
。 -
选择隧道,然后从 Actions (操作) 中选择 Close (关闭)。关闭隧道会导致两个本地代理实例关闭。