MacBook 如何无跳板机 RDP 连接 AWS Wavelength Windows 实例
在 AWS Wavelength (5G 边缘云) 环境中,由于网络架构的特殊性(位于运营商网络边缘),传统的公网连接方式往往受到限制。通常大家会想到使用“跳板机” (Bastion Host),但这增加了运维成本和安全风险。
本文将介绍一种最安全、最推荐的方案:利用 AWS Systems Manager (SSM) 的端口转发功能,在 MacBook 和 Wavelength 实例之间建立加密隧道,直接通过 localhost 进行 RDP 远程桌面连接。
方案优势
无需跳板机:节省一台机器的成本,减少维护工作。
无需开放端口:实例的安全组 (Security Group) 不需要对公网开放 3389 高危端口。
数据加密:所有流量通过 AWS SSM 加密隧道传输。
第一部分:AWS 端的准备工作 (至关重要)
很多连接失败(报错 TargetNotConnected)都是因为这部分没配置好。
1. 配置 IAM 角色 (IAM Role)
这是 SSM Agent 的“身份证”。
创建一个 IAM Role,选择 EC2 服务。
必须包含策略:
AmazonSSMManagedInstanceCore。将此 Role 绑定到您的 Wavelength EC2 实例上。
2. 网络配置 (确保实例能“上网”)
SSM Agent 需要通过 HTTPS (443端口) 访问 AWS 管理后台。在 Wavelength 环境中,这通常意味着:
分配 Carrier IP:为实例分配一个运营商 IP。
配置路由表 (Route Table):
确保子网关联的路由表中,有一条
0.0.0.0/0的路由指向 Carrier Gateway (CAG) (注意:不是 IGW 或 NAT)。
安全组出站规则:确保允许 443 端口或所有流量的出站 (Outbound)。
注意:如果您不想使用 Carrier IP,则必须在 VPC 内配置 Interface VPC Endpoints (SSM, SSMMessages, EC2Messages) 才能让内网机器连接 SSM 服务。
第二部分:MacBook 本地环境配置
1. 安装 AWS 工具
打开终端 (Terminal) 运行:
# 1. 安装 AWS CLI
brew install awscli
# 2. 安装 Session Manager 插件 (必须装,否则无法转发端口)
brew install --cask session-manager-plugin
# 3. 安装 Microsoft Remote Desktop (推荐)
# 请前往 Mac App Store 下载
2. 配置身份凭证
在终端运行 aws configure,并输入:
Access Key ID / Secret Access Key:从 IAM 控制台获取。
Region:输入实例所属的父区域代码 (例如
us-east-1,这一点很容易被忽略)。
第三部分:建立连接 (核心步骤)
1. 启动隧道命令
在终端中执行以下命令(建议复制整行,避免换行符导致的语法错误):
aws ssm start-session --region us-east-1 --target i-xxxxxxx --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["3389"],"localPortNumber":["55678"]}'
--region: 指定区域(如 us-east-1)。--target: 替换为您的实例 ID。localPortNumber: 您本地电脑的端口,这里设为 55678。
成功标志:
终端显示 Waiting for connections... 且光标闪烁。请勿关闭此窗口。
2. 发起 RDP 连接
打开 Microsoft Remote Desktop。
添加 PC,主机名填写:
localhost:55678。用户账号通常为
Administrator,密码通过 AWS 控制台 "Connect" -> "RDP Client" -> "Get password" 获取。双击连接,即可进入 Windows 桌面。
常见报错与排查 (Troubleshooting)
在实战中,您可能会遇到以下错误,请对号入座:
| 错误信息 | 原因分析 | 解决方案 |
| arguments are required: --target | 命令格式错误,通常是因为复制命令时带有多余的换行符。 | 确保命令在同一行内输入。 |
| You must specify a region | AWS CLI 不知道实例在哪个区。 | 在命令中显式加上 --region us-east-1 (或对应区域)。 |
| Unable to locate credentials | 本地没有配置 Access Key。 | 运行 aws configure 输入密钥。 |
| TargetNotConnected | 最常见错误。AWS 后台连不上实例。 | 1. 检查实例是否 Running。 2. 重中之重:检查是否绑定了含 3. 检查路由表是否指向 Carrier Gateway。 |
进阶技巧:设置快捷别名
为了避免每次都输入长命令,可以在 ~/.zshrc 文件中添加别名:
alias connect-win='aws ssm start-session --region us-east-1 --target i-xxxxxxx --document-name AWS-StartPortForwardingSession --parameters "{\"portNumber\":[\"3389\"],\"localPortNumber\":[\"55678\"]}"'
保存后执行 source ~/.zshrc。以后只需在终端输入 connect-win 即可一键建立隧道。