作者:ezmsp易云服科技架构师雷凯栋
操作步骤:
- 需要在EC2上安装最新对Systems Manager代理
- 创建IAM用户并且配置对应权限可以进行登陆对应机器
- 更新本地AWS CLI到最新版本
- 在本地安装Session Manager插件
- 更新本地SSH配置
一、在对应版本的EC2(Linux系统X86_64)上安装SSM Agent
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
安装完成后运行代理:
sudo systemctl start amazon-ssm-agent
检查运行状态
sudo systemctl status amazon-ssm-agent
具体不同的操作系统安装方法请参考:
https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/ssm-agent.html
二、创建具有SSM权限的IAM用户
创建自定义策略(ssm-test)如下:(修改红色部分信息)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": [
"arn:aws:ec2:Region:Account ID:instance/Instance ID",
"arn:aws:ssm:*:*:document/AWS-StartSSHSession"
]
}
]
}
- 创建user(ssm-user),添加以上自定义策略。
- 创建Role(ssm-role) 服务选择EC2,策略选择AmazonSSMManagedInstanceCore
- 将Role(ssm-role)附加到SSMEC2实例上。
三、更新本地(Linux系统)AWSCLI到V2版本。
- aws –version 查看是否为
- 版本如果不是可以通过sudoyumuninstall awscli 命令卸载
- 然后通过以下命令下载并安装
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
不同的操作系统安装方式请参考:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html
四、在本地(Linux系统)安装Session Manager插件
- 下载Session Manager插件的RPM包
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm" -o "session-manager-plugin.rpm"
- 运行安装命令
sudo yum install -y session-manager-plugin.rpm
- 验证插件是否安装
session-manager-plugin
如果安装成功则返回以下信息:
The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.
- 安装完成后可以通过配置AWSCLI,运行启动会话命令来测试插件
- 下载用户ssm-user的AKSK
- 在本地命令行使用命令aws configure 命令配置AKSK
- 执行命令: aws ssm start-session –target Instance ID
五、更新本地SSH配置
默认系统ssh配置文件在 ~/.ssh/ 下
- 进入到 ~/.ssh/下,创建config文件
vi config
将以下信息粘贴到配置文件中,保存退出。
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
- 配置完成后进行对密钥文件进行授权,并且做登陆验证。chmod 600 key.pem
- 使用ssh -i key.pem ec2-user@instance ID 命令做登陆验证
注意:如果遇到以下报错信息,可以尝试切换到非root用户下进行重新登陆验证。
ssh: Could not resolve hostname i-0XXXXXXXXXX: nodename nor servname provided, or not known