使用Session Manager登录EC2

一、背景

Session Manager是System Manager(以下简称SSM)里边的管理套件其中的一个组件。使用Session Manager可以免密钥登录EC2。

Session Manager的使用条件是,EC2要安装SSM Agent。

创建EC2时候选择AWS官方的AMI的时候,都是自带Agent的,包括:

  • Amazon Linux及更高
  • Ubuntu及更高
  • Windows Server 2016及更高

以下操作系统默认不包含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

注意:对于一个SSH登录出现故障的场景,如果本身是不包含System Manager Agent的,那么这个时候是无法登录的,这种场景不能使用Session Manager登录EC2修复故障。因此,为了避免这种场景出现,建议:1)使用Amazon Linux 2(与CentOS7兼容);2)使用Ubuntu等官方AMI(内置System Manager Agent)

二、创建IAM角色

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

01

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

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

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

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

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

05

1、创建EC2并选择IAM角色

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

06

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

07

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

08

创建EC2完成。

2、使用Session Manager连接到EC2

在EC2创建时候,需要等待1-2分钟,待其健康状态变为2/2 checks Passed也就是检查通过后,即可开始连接。

选中EC2,点击右上方的连接按钮。如下截图。

09

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

10

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

连接成功。如下截图。

11

3、登录到Windows演示

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

4、使用AWS CLI登录

从AWS CLI上也可以登录EC2。为此,需要安装AWS CLI的插件,下载地址和文档说明在这里:

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

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

获取Instance ID后,执行如下命令:

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

即可登录到EC2。如下截图。

18

此方法可在Windows、Linux、MacOS的客户端上,远程登录到Linux、Windows的系统上,Windows系统就会打开Powershell而无需Windows图形界面。

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

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

13

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

14

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

15

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

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

16

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

17

完。