【问题标题】:Why can't I establish a connection to my EC2 from AWS Lambda via Paramiko over SSH?为什么我无法通过 Paramiko 通过 SSH 从 AWS Lambda 建立到我的 EC2 的连接?
【发布时间】:2021-11-14 15:16:04
【问题描述】:

上下文:我正在尝试使用 paramiko Python 库从 AWS Lambda 函数(使用 Python 3.7 编写)内通过 SSH 连接到 EC2 实例。有问题的 EC2 实例存在于 VPC 中。我也知道这个 EC2 的公共 IP。我已经为 Paramiko 创建了一个 lambda 图层包,并且能够使用 import paramiko 语句而没有错误,所以我知道该库工作正常。

尝试的解决方案: 我已经使用this tutorial 尝试通过 SSH 连接到上面提到的 EC2。到目前为止我的代码如下(一些信息已被随机化以保护隐私):

import json
import boto3
import paramiko
    
def lambda_handler(event, context):
    s3_client = boto3.client("s3") # Boto3 is the AWS SDK for Python and allows us to manage these 2 services (among other things) 
    
    s3_client.download_file("censored-bucket-name", "keyname.pem", "/tmp/keyname.pem")
    ssh_key = paramiko.RSAKey.from_private_key_file("/tmp/keyname.pem") # obj type = PKey
                
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # setting policy to connect to unknown host and trust it
    ssh_client.connect(hostname="3.81.62.55", username="ubuntu", pkey=ssh_key)  # connecting to ec2 server

    return {
        statusCode': 200, 
        body': json.dumps('Commands have been successfully executed ')
    }

问题:
我的问题是,在 Lambda 中运行此代码时(使用“{}”的空测试事件),代码只是超时(2 分钟)并且根本不会引发任何错误。
即使我的 Lambda 函数属于同一个 VPC、使用相同的子网并应用了必要的安全组,我似乎也无法连接到 EC2。
任何想法我做错了什么?

【问题讨论】:

    标签: python amazon-ec2 ssh aws-lambda paramiko


    【解决方案1】:

    3.81.62.55 是一个公共 IP。您必须使用您的实例私有 IP 或 AWS 为实例提供的默认 EC2 dns url。

    【讨论】:

    • 这很有趣,我遵循的教程提到使用公共 IP 进行连接。 VPC 背后的 EC2 不就是这种情况吗?
    • @PrithviBoinpally Lambda 在 VPC 中默认没有互联网访问权限。因此,如果您使用公共 IP,您的 lambda 会尝试使用互联网访问实例。由于无法上网,所以超时。
    • 嗯,有道理。好吧,我尝试使用我尝试连接的 EC2 的私有 IP,但它仍然超时。
    • 您的 VPC 或 lambda 可能配置错误。您确定实例在同一个 VPC 中吗?实例安全组呢? Lambda 安全组? lambda vpc 权限?
    • 所以在检查了 lambda 函数的 VPC 配置后,我可以确认 EC2 安全组与 Lambda 的匹配,子网和 VPC 本身也是如此。但是,EC2 只接受来自我不确定是否包含我的 Lambda 函数的 CIDR 范围的入站 IP。但鉴于此问题的范围已缩小到纯粹与网络相关的问题,我会接受您的回答并尝试修复网络。
    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2017-04-18
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多