首页 > 其他分享 >使用Session Manager登录EC2

使用Session Manager登录EC2

时间:2022-10-25 19:23:30浏览次数:74  
标签:截图 Agent 如下 Manager Session EC2

一、Session Manager简介

Session Manager是System Manager(以下简称SSM)里边的管理套件其中的一个组件。它是一项Region级别的区域性服务。使用Session Manager在特定系统上可以快速免密钥登录EC2。

1、使用Session Manager的前提

几个前提:

  • EC2系统上安装了System Manager Agent,简称SSM Agent;
  • EC2上附带了Session Manager所需要的IAM Role角色;
  • EC2具有外网访问权限,可以连接到本区域的Session Manager服务;
  • EC2没有外网访问权限,但是本VPC内配置了Session Manager的VPC Endpoint,可以从私有子网Private Subnet连接到本区域的Session Manager服务;
  • 如果希望从开发者本机(云下笔记本)使用Session Manager登录到EC2,那么使用者环境需要安装AWSCLI、配置正确的密钥,并安装Session Manager插件;
  • 在以上全过程中,EC2无须打开外网TCP 22端口的访问权限,所有操作将通过EC2上安装的SSM Agent传递到EC2上。

2、默认支持Session Manager的系统

在创建EC2时候选择以下的AWS官方AMI,已经内置System Manager Agent的,支持使用Session Manager包括:

  • Amazon Linux 1,2,以及未来版本;
  • Ubuntu 18.04,以及更高;
  • Windows Server 2016,以及更高版本。

3、需要额外安装System Manager Agent才能支持Session Manager的操作系统

以下操作系统默认不包含System Manager Agent,需要额外手工安装Agent:

  • 社区的CentOS镜像
  • 社区其他非官方制作者发布的镜像
  • 从IDC导入的镜像

SSM Agent是开源的,如果您对在EC2内安装管理控制端有疑虑,请从如下Github地址获取SSM的代码:

https://github.com/aws/amazon-ssm-agent

安装Agent的步骤如下:

https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/sysman-manual-agent-install.html

本文按照使用Amazon Linux 2系统编写,已经内置System Manager Agent,无需再手动安装。

二、为EC2创建Session Manager需要的IAM角色并绑定到EC2

1、创建IAM角色

进入IAM节点,点击左侧的角色Role按钮,点击右侧的创建角色按钮。如下截图。

点击服务类型是EC2,然后向下滚动屏幕。如下截图。

选择EC2 Role for System Manager,然后点击右下角的下一步权限。如下截图。

在策略界面上,自动加载出来了一条策略。测试无须做配置,直接点击标签按钮跳到下一步。如下截图。

在配置标签界面上,无须配置,点击下一步跳过。

在创建IAM角色的最后一步,输入角色的名称,例如ec2-ssm-login,稍后配置中将使用这个名字。最后点击右下角的创建角色完成创建过程。如下截图。

2、新创建EC2时候选择Session manager需要的IAM角色

创建使用System Manager – Session Manager登录的EC2的过程,与创建普通EC2没有明显的差别。其中一个关键步骤是,在创建的时候就赋予EC2响应IAM角色。如下截图。

在选择EC2安全规则组一步,无需开放任何端口,即便将所有入栈端口都关闭,也可以使用SSM。如下截图。

在创建的最后一步,选择EC2登录密钥,这里为了演示效果,不选择任何SSH Key,然后直接创建EC2。如下截图。

创建EC2完成。

三、在AWS控制台上使用Session Manager连接到EC2

在EC2创建时候,需要等待1-2分钟,待其健康状态变为2/2 checks Passed也就是检查通过后,才可开始连接。选中EC2,点击右上方的连接按钮。如下截图。

在新弹出的窗口中,选择连接方式是Session Manager,并点击连接。如下截图。

如果之前的配置不正确,这一步将提示无法检测SSM Agent,也就无法连接。

连接成功。如下截图。

Session Manager也可以用于Windows操作系统。登录到Windows以后提供的不是GUI图形界面,而是提供Windows Powershell。您可以通过Powershell安装软件、调整配置。如下截图。

四、在云下客户机(如开发者笔记本)使用AWS CLI的Session Manager插件登录到EC2

在云下的开发环境,例如开发者本机,如果安装了AWSCLI工具,那么也可以通过Session Mangaer连接到EC2。为此,需要安装AWS CLI的插件,下载地址和文档说明在这里:

https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

在以上文档中,可以分别找到Windows、Linux和MacOS的版本。

环境安装好之后,连接到EC2之前还需要获取本EC2的Instance ID。查看Instance ID可以通过EC2控制台网页获得,也可以在CLI上执行aws ec2 describe-instances 也可以看到Instance ID。获取Instance ID后,执行如下命令:

aws ssm start-session --target i-0b35c6823Ieeafc7O

即可登录到EC2。如下截图是在MacOS下的AWSCLI使用Session Manager登录到Windows EC2后的Powershell界面。

此方法可在运行AWSCLI的客户机上,跨平台远程登录到Linux、Windows的EC2系统上,其中Linux会打开默认shell,而Windows系统就会打开Powershell。

五、配置SSM登录后的操作日志

进入SSM控制台,找到左侧的节点管理,在其中找到Session Manager。如下截图。

进入SSM模块后,查看属性选项。如下截图。

在设置界面下,向下滚动页面,即可看到S3存储桶和自动加载脚本的设置。如下截图。

Shell Profile的作用是在登录后自动执行脚本,可根据实际需要进行配置。

查看S3存储桶内,即可看到Session Manager登录的日志。如下截图。

将日志下载到本地后,打开可以看到其中的内容就是SSH日志。

六、使用AWSCLI+Session Manager插件转发内网端口到开发者本地

上文使用Session Manager可以让外部用户远程连接到EC2,当搭配AWSCLI时候,还可以从开发者本地的直接连接到EC2。接下来进一步拓展使用场景,有时候还需要从开发者本机访问云上VPC内的数据库。这时候能访问到EC2是不够的,最好从开发者本机能直接访问VPC内的数据库。这种场景可以使用Session Manager的端口转发来实现。

首先在开发者的环境上安装好AWSCLI,并安装好Session Manager插件。接下来确认下VPC内要转发的RDS的Endpoint名称,然后构建如下命令:

aws ssm start-session \
    --target i-123456xxxxxxxx \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["mydb.example.ap-east-1.rds.amazonaws.com"],"portNumber":["3306"], "localPortNumber":["56789"]}'

启动完毕后,即可将RDS的Endpoint映射到本地的56789端口。另外,此窗口不能关闭,否则SSH转发会断开链接。

接下来使用如下命令即可连接到RDS。注意命令中需要使用127.0.0.1的IP地址表示本机,不能使用localhost,否则mysql客户端可能会查找本机的socket文件而不是通过网络接口连接。

mysql -h 127.0.0.1 -P 56789 -u admin -p

输入RDS的admin账户的密码即可完成登录。

七、参考文档

安装Session Manager插件:

https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

使用Session Manager端口转发:

https://github.com/peteragility/ssm-port-forward

完。

标签:截图,Agent,如下,Manager,Session,EC2
From: https://www.cnblogs.com/xzlive/p/16825987.html

相关文章

  • base::AtExitManager 和 base::Singleton 的结合使用
    单例模式(Singleton)也称为单件模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出......
  • tensorflow中session的用法,莫烦的例子(2)
    importtensorflowastf#创建两个矩阵maxtrix,然后输出两个矩阵相乘的结果matrix1=tf.constant([[3,3]])#constant表示maxtrix1是一个常数,[3,3]表示是一个一行两列的......
  • session的用法
    seession是一个为了保存用户状态而创建的一个特殊的对象其本质上相当于Map,里面可以存放多个键值对,是以key-value进行存放的(key必须是一个字符串,value是一个对象)该对象主......
  • Lang.NEXT 2012相关Session
    2012年4.2-4日的Lang.NEXT2012是.NET(CLR,DLR以及其他平台)上语言及相关工具的设计开发者的盛会。会议的相关Session已经放出,绝对值得好好的学习,地址......
  • MindManager: Draw your own MindMap!
    ─什么是MindMap?MindMap是一种看起来很像树形图的东西,不过比树形图还强力得多(笑)。一般人在记笔记、或规划事情的时候,多半只有两种方法:第一种人像是逐字纪录、听到什么就......
  • Prometheus之Alertmanager介绍
    一告警功能概述Prometheus对指标的收集、存储同告警能力分属于PrometheusServer和Alertmanager连个独立的组件,前者仅负责基于告警规则生成告警通知,具体的告警操作则由后者......
  • vuex sessionStorage存储对象时会显示[object object]的问题
    VUE如果直接使用window.sessionStorage.setItem和window.sessionStorage.getItem来进行存取对象的话,不能正常使用该对象,并且在Application的Session Storage中会显示[obje......
  • CacheManager:–个通用缓存接口抽象类库
    CacheManager是–个缓存通用接口抽象类库,它支持各种高速缓存提供者,例如Memcache,Redis,并且有许多先进的功能特性。具体可以访问官方网站 ​​http://cachemanager.net......
  • VMware vRealize Suite Lifecycle Manager 8.10 - vRealize Suite 生命周期和内容管理
    请访问原文链接:https://sysin.cn/blog/vmware-vrslm-8/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org使用vRealizeSuiteLifecycleManager管理vRea......
  • 通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
    本专栏计划的文章数在150篇左右,到2022年10月6日为止,目前已经更新了56篇,专栏完成度为37.3%笔者这套​​零基础快速学习ABAP​​​从2021年4月10日写下第一篇文章以......