背景
在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进入后台