一、背景
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
按钮,点击右侧的创建角色按钮。如下截图。

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

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

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

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

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

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

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

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

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

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

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

4、使用AWS CLI登录
从AWS CLI上也可以登录EC2。为此,需要安装AWS CLI的插件,下载地址和文档说明在这里:
环境安装好之后,连接到EC2需要获取本EC2的Instance ID。查看Instance ID可以通过EC2控制台网页获得,也可以在CLI上执行aws ec2 describe-instances
也可以看到Instance ID。
获取Instance ID后,执行如下命令:
aws ssm start-session --target i-0b35c68281eeafc70
即可登录到EC2。如下截图。

此方法可在Windows、Linux、MacOS的客户端上,远程登录到Linux、Windows的系统上,Windows系统就会打开Powershell而无需Windows图形界面。
四、配置SSM登录后的操作日志
进入SSM控制台,找到左侧的节点管理,在其中找到Session Manager。如下截图。

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

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

Shell Profile的作用是在登录后自动执行脚本,可根据实际需要进行配置。
查看S3存储桶内,即可看到Session Manager登录的日志。如下截图。

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

完。