AWS上通过session manager访问实例
背景
在AWS上有一台虚拟机,国内可以通过ssh正常访问。
该虚拟机在大部分场景下都满足网络访问的需求,但是无法访问Netflix和ChatGPT
在论坛看到有人使用Cloudflare WARP这个产品,绕过限制,实现访问ChatGPT,参见链接就想试一试。
在因为将一阵误操作后,将代理模式成了Gateway(默认模式),导致ssh断掉。
想着通过AWS的页面操作吧,遇到了一些坑,记录如下。
踩坑流程
登录AWS—-访问EC2—–找到对应的实例/虚拟机
如下图所示

【选择实例】—【连接】
支持以下几种方式

有以下四种方式,
- EC2 Instance  Connnect
基于SSH的访问,在我的网络配置失效场景下的无法使用
 - 
Session Manager(会话管理器)
 - 
SSH 客户端
基于SSH的访问,在我的网络配置失效场景下的无法使用
 - 
EC2 Serial Console(串口)
基于Serial Console,支持通过Serial Console连接至界面,进行一系列配置。但因为我的实例规格是免费送的t2.micro,不支持该方式链接
 
只能试试Session Manager这种方式了
Session Manager具有以下特点:
- 在不使用 SSH 密钥或堡垒主机的情况下连接到您的实例。
 - 使用 AWS Key Management Service 密钥保护会话。
 - 您可以在 Amazon S3 存储桶或 CloudWatch Logs 日志组中记录会话命令和详细信息。
 - 在会话管理器首选项页面上配置会话。
 
看起来满足我们的需求,但我研究了半天也没搞明白怎么用(AWS的文档质量一般吧)
最后,我准备提个工单,找技术支持,毕竟阿里与都可以这么操作。
但是在找技术支持的时候发现,我账号的level太低,没有权限提工单,或者可以找Pay Support。
一看Pay Support居然需要10刀起步,比我的虚拟机还贵,作罢,只能继续研究了。
有钱能使鬼推磨,无奈继续研究了下,Session Manager的配置方式如下
配置
前置条件
参见这里Systems Manager 的先决条件 – AWS Systems Manager (amazon.com)
- 虚拟机中必须有SSM Agent
 - 版本似乎没有明显要求,但应该是越高越好
 
如何在无法登录后台的场景下,判断SSM Agent的版本
【EC2控制台】—【选择实例】—-【操作】—【监控和故障排查】—【获取系统日志】
仔细看日志,你应该能看到这样的日志
2023/04/18 17:38:38Z: Amazon SSM Agent v3.1.1732.0 is running
配置步骤
Session Manager需要一些配置才能使用
假设你和我一样是完全默认配置,那么按下列方式即可
- 登录IAM管理控制台
 - 
创建一个拥有访问SSM-Agent权限的用户
创建用户
 
- 
左框栏【用户/Role】— 【创建用户/Create Role】
设置服务
 - 
【可信实体】选择【AWS Service】
 - 
【使用案例】选择【EC2】
配置策略
 - 
搜索框输入
AmazonSSMManagedInstanceCore输入用户名称,创建完成
- 将用户添加至实例列表
 
- 回到EC2实例界面,勾选实例,
 - 选择【操作/ACTION】— 【安全/Security】—–【修改IAM角色】
 - 在该页面选择你刚创建的Role,假设为”test”
 
- 验证是否生效
 
- 进入下列网址AWS Systems Manager
 - 左边栏选择【会话管理器】—【会话】—【启动会话】
 - 选择你该附加用户所在的实例即可(这里可能要等个5分钟才会生效,可以尝试重启虚拟机)
 
 
以上内容参考这里设置 AWS Systems Manager – AWS Systems Manager (amazon.com)
成功通过Session Manager进入后台
