AWS上通过session manager访问实例

背景

在AWS上有一台虚拟机,国内可以通过ssh正常访问。

该虚拟机在大部分场景下都满足网络访问的需求,但是无法访问Netflix和ChatGPT

在论坛看到有人使用Cloudflare WARP这个产品,绕过限制,实现访问ChatGPT,参见链接就想试一试。

在因为将一阵误操作后,将代理模式成了Gateway(默认模式),导致ssh断掉。

想着通过AWS的页面操作吧,遇到了一些坑,记录如下。

踩坑流程

登录AWS—-访问EC2—–找到对应的实例/虚拟机

如下图所示

EC2实例的控制页面

【选择实例】—【连接】

支持以下几种方式

image-20230421005534022

有以下四种方式,

  1. EC2 Instance Connnect

    基于SSH的访问,在我的网络配置失效场景下的无法使用

  2. Session Manager(会话管理器)

  3. SSH 客户端

    基于SSH的访问,在我的网络配置失效场景下的无法使用

  4. 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)

  1. 虚拟机中必须有SSM Agent
  2. 版本似乎没有明显要求,但应该是越高越好

如何在无法登录后台的场景下,判断SSM Agent的版本

【EC2控制台】—【选择实例】—-【操作】—【监控和故障排查】—【获取系统日志】

仔细看日志,你应该能看到这样的日志

2023/04/18 17:38:38Z: Amazon SSM Agent v3.1.1732.0 is running

配置步骤

Session Manager需要一些配置才能使用

假设你和我一样是完全默认配置,那么按下列方式即可

  1. 登录IAM管理控制台

  2. 创建一个拥有访问SSM-Agent权限的用户

    创建用户

  • 左框栏【用户/Role】— 【创建用户/Create Role】

    设置服务

  • 【可信实体】选择【AWS Service】

  • 【使用案例】选择【EC2】

    配置策略

  • 搜索框输入AmazonSSMManagedInstanceCore

    输入用户名称,创建完成

    1. 将用户添加至实例列表
    • 回到EC2实例界面,勾选实例,
    • 选择【操作/ACTION】— 【安全/Security】—–【修改IAM角色】
    • 在该页面选择你刚创建的Role,假设为”test”
    1. 验证是否生效
    • 进入下列网址AWS Systems Manager
    • 左边栏选择【会话管理器】—【会话】—【启动会话】
    • 选择你该附加用户所在的实例即可(这里可能要等个5分钟才会生效,可以尝试重启虚拟机)

以上内容参考这里设置 AWS Systems Manager – AWS Systems Manager (amazon.com)

成功通过Session Manager进入后台

登录成功后的界面

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注