我正在使用AWS系统管理员会话管理器连接到我的EC2实例。
当我连接时,会话不会来源于我的.bashrc或.bash_profile,所以我得到了一个非常简单的shell,并且希望在它启动时设置一些配置。
会话管理器将我作为EC2-用户连接,但是shell从/目录开始,而不是用户目录。
当它启动时,我无法弄清楚它是否正在寻找任何配置文件。
我怎样才能让它来源于用户配置文件呢?
我已经通过启用“”设置来设置会话管理器来使用ec2-user。
如果我使用EC2实例连接到实例,那么它的工作原理如下所示:
但是,如果我使用会话管理器,配置文件并不来源于您在这里可以看到的:
发布于 2020-06-06 00:33:27
AWS系统管理器会话管理器使用一个“代理”来建立与EC2实例的连接。代理向系统管理器注册实例。当请求连接时,将向代理发送消息。然后将命令发送到代理,代理在本地执行这些命令并将结果发回。
因此,会话管理器实际上并没有登录到bash会话中。它只是一次执行接收到的命令.
Session Manager的好处是,它可以用于连接到私有EC2实例,因为代理建立到AWS的“出站”连接,而不是将连接请求发送给“实例”。
相反, EC2实例连接实际上建立了到实例的正常SSH连接。web浏览器使用到AWS的Guacamole连接,然后AWS使用正常的SSH (通过额外的攻击允许临时键盘)运行这些命令。因此,它看起来像是运行在shell上的正常连接。
实际上,您可以使用EC2实例连接的“临时SSH键”特性与普通SSH客户端一起使用,而无需使用基于web的SSH客户端。因此,它实际上是一个特性中的两个:基于web的SSH客户端,以及使用临时键盘建立SSH连接的方法。
发布于 2020-06-05 09:01:36
这是因为默认情况下,您被记录为ssm-用户,而不是ec2-user
。因此,要以ec2-user
身份登录,可以执行以下命令:
sudo su - ec2-user
这将以ec2-user
身份登录您,来源您的.bashrc
并将您放置在/home/ec2-user
中。
或者,如果您使用EC2 Instance connect
,则ec2-user
被指定为默认值,并且正确地将加载到/home/ec2-user
中并获取bash。
发布于 2021-06-05 10:13:03
因为session Manager实际上并没有登录到bash会话中,但是我们可以通过创建一个定制的InteractiveCommands会话文档来实现这一点,该文档将切换到ssm-user bash。台阶在下面。
{ "schemaVersion": "1.0", "description": "Document to run single interactive command on an instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "Logged in as bash shell", "default": "", "allowedPattern": "^[a-zA-Z0-9-\_/]+(.log)$" } }, "properties": { "linux": { "commands": "su ssm-user", "runAsElevated": true } } }
{“版本”:"2012-10-17“、”声明“:[{ "Sid":"SSM-LogLinuxBash-IAMPolicy”、“效果”:“允许”、“行动”:"ssm:StartSession“、”资源“:"arn:aws:ssm:**:document/SSM-LogLinuxBash",“arn:aws:EC2:**:实例/或*”},{ "Sid":"TerminateSSM会话“、”效果“:”允许“、”操作“:"ssm:TerminateSession",“资源”:"arn:aws:ssm:**:session/${aws:username}-*“}}
aws ssm开始-会话-目标-文档名称SSM-LogLinuxBash
详情请浏览以下博客。为了完全实现
https://stackoverflow.com/questions/62211608
复制相似问题