如何从 lambda 函数 ssh 进入 EC2 实例

Nik*_*ali 1 python ssh amazon-ec2 amazon-web-services aws-lambda

我正在尝试在 Lambda 函数中编写我的第一个 Python 代码,该代码将检查我是否能够通过 SSH(端口 22)连接到 EC2 实例。

我已经使用安全组 22 CidrIP 我的公共 IP 创建了一个 EC2 实例,然后在同一帐户中创建了一个使用 python 3.8 作为运行时的 Lambda 函数

现在,通过代码,我尝试通过传递EC2 Public IPUsername、SSH 进入 EC2Key pair

并执行一个命令,例如: sudo su

题:

  1. 我应该把我的密钥对放在哪里?
  2. 从 lambda 函数通过 SSH 连接到 EC2 的代码是什么?

jar*_*mod 5

我要说的第一件事是,您几乎不应该从 Lambda SSH 到 EC2。有很多更好的方法可以在 EC2 上远程运行脚本,包括:

  1. SSM 运行管理器
  2. 在 EC2 实例上公开 API 并调用该 API

如果你真的想这样做,也许是出于某种学术原因,那么:

  1. 将密钥对存储在 Secrets Manager 中并授予 Lambda 读取它的权限
  2. 使用 Python 包,例如 Fabric 或 Paramiko

[更新:您似乎正在尝试验证 SSH 访问被阻止]

验证安全组的最佳方法是使用 EC2 API、描述实例、枚举安全组及其入站规则。如果您不相信这种方法,那么您可以尝试使用我上面提出的方法通过 SSH 连接到实例(尽管您可能只需要尝试连接以使测试有用,大概)。

您将遇到的问题是安全组可能已设置为阻止所有 SSH 访问(顺便说一下,这是默认设置),但允许的单个“攻击者”IP 地址除外。您的 Lambda SSH 连接尝试将失败,因为它不是来自那个“攻击者”IP,但您的 Lambda 测试将报告“我无法通过 SSH 访问 Web 服务器,测试成功”。那是无效的测试。