龙空技术网

使用 Session Manager 替代堡垒机登录和管理 EC2 主机

MeshCloud脉时云 110

前言:

此刻你们对“云主机如何登陆”大致比较注意,你们都需要了解一些“云主机如何登陆”的相关内容。那么小编同时在网络上网罗了一些有关“云主机如何登陆””的相关知识,希望我们能喜欢,看官们一起来学习一下吧!

作者:北京易云服ezmsp公有云架构师 王一凡

企业 IT 管理员经常会面临两难抉择。 一方面,开发人员希望他们部署代码的业务系统的基础架构环境大门敞开,最好自己可以以各种方式能从本地的主机对业务系统进行代码管理和部署。 另一方面,企业的安全架构师又希望业务系统足够的安全,最好是层层把关,才能对系统进行操作。在这样的两难选择下,使得现阶段主流架构都会使用堡垒机作为企业访问内部资源的第一道关卡。例如,他们需要通过登录位于公有子网的堡垒机来对其服务器进行 shell 级访问。 他们可能需要杀死失控进程,查阅服务器日志,微调配置或安装临时补丁,同时保持强大的安全配置文件。然而,使用堡垒机会带来额外的使用上的不便利,以及要承担在实例上打开入站 SSH 端口时出现的风险。

Session Manager介绍

什么是Session Manager ? 下面是一段官方文档介绍:

AWS Systems Manager 会话管理器是一个新的交互式 Shell 和 CLI,有助于提供安全、访问权限受到控制且经过审计的 Windows 和 Linux EC2 实例管理。使用会话管理器,您无需打开入站端口、管理 SSH 密钥或使用堡垒主机。并且登录的主机可以处于公有子网或者私有子网。

借助会话管理器,您可以提高安全性,集中进行访问管理并接收详细的审计。除了无需打开入站端口之外,您还可以结合使用会话管理器与 AWS NAT Gateway,以便登录处于私有子网的EC2主机。通过使用 AWS Identity and Access Management (IAM) 策略,您可以在一个中心位置授予和撤销对实例的访问权限。提供访问权限后,您可以使用 AWS CloudTrail 审计哪个用户访问了实例,并将每个命令记录到 Amazon S3 或 Amazon CloudWatch Logs。会话管理器用户只需单击并启动一个会话,然后选择一个实例,即可快速开始使用该工具。

如何使用 Session Manager 从本地登录 EC2

操作步骤如下:

需要在EC2上安装最新对Systems Manager代理创建IAM用户并且配置对应权限可以进行登陆对应机器更新本地AWS CLI到最新版本在本地安装Session Manager插件更新本地SSH配置在对应版本的EC2(Linux系统X86_64)上安装SSM Agent

sudo yum install -y

安装完成后运行代理:

sudo systemctl start amazon-ssm-agent

检查运行状态:

sudo systemctl status amazon-ssm-agent

具体不同的操作系统安装方法请参考:创建具有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)附加到SSM EC2实例上。更新本地(Linux系统)AWS CLI 到V2版本。aws --version 查看是否为2.版本如果不是可以通过sudo yum uninstall awscli 命令卸载然后通过以下命令下载并安装

curl "; -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

不同的操作系统安装方式请参考:

在本地(Linux系统)安装Session Manager插件下载Session Manager插件的RPM包

curl "; -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.安装完成后可以通过配置AWS CLI,运行启动会话命令来测试插件下载用户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 命令做登陆验证

如果遇到以下报错信息

ssh: Could not resolve hostname i-0XXXXXXXXXX: nodename nor servname provided, or not known

可以尝试切换到非root用户下进行重新登陆验证。

标签: #云主机如何登陆