You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Lambda连接到EC2实例问题排查求助

排查Lambda连接EC2内网IP出现ECONNREFUSED的问题

以下是针对你场景的具体排查方向:

  • 检查SSH隧道的监听地址
    确认EC2上的SSH隧道本地监听端口是绑定到0.0.0.0(允许所有IP访问)还是127.0.0.1(仅本地访问)。执行命令netstat -tulpn | grep <隧道转发的本地端口>,如果结果里的监听地址是127.0.0.1,Lambda作为同VPC的外部节点无法访问,需要修改SSH隧道命令,加上-g参数(允许远程主机连接本地转发端口),或者在建立隧道时指定绑定地址为0.0.0.0,比如:

    ssh -L 0.0.0.0:<本地端口>:<数据库地址>:<数据库端口> <SSH用户>@<数据库主机>
    
  • 验证EC2安全组入站规则
    虽然你已开放所有入站,但需确认规则是否覆盖Lambda的访问来源:

    1. 入站规则的源需设置为Lambda所在安全组ID,或者当前VPC的CIDR段(如10.0.0.0/16)
    2. 确保规则开放的是SSH隧道的本地端口(不是22端口),协议为TCP
  • 检查EC2本地防火墙
    EC2实例可能自带iptables、ufw等本地防火墙,禁止了目标端口的入站流量。执行iptables -L -n查看规则,若存在拒绝该端口的规则,需添加允许策略;也可临时关闭防火墙测试(sudo systemctl stop iptables或sudo ufw disable),若测试能连接,再针对性调整防火墙规则。

  • 确认Lambda网络配置

    1. 检查Lambda是否确实关联了目标VPC及正确的子网(需是能访问EC2内网IP的子网,若为私有子网,需确保路由表包含VPC内网路由,默认配置通常已包含)
    2. 确认Lambda的安全组出站规则允许访问EC2的目标端口(你已开放所有出站,这一步可快速验证)
  • 测试端口可达性
    在Lambda中添加简单的端口连通性测试代码,比如Node.js环境:

    const net = require('net');
    const client = new net.Socket();
    client.connect(<隧道端口>, '<EC2内网IP>', () => {
      console.log('端口连通成功');
      client.destroy();
    });
    client.on('error', (err) => {
      console.log('端口连通失败:', err.message);
    });
    

    通过日志确认是端口不可达还是其他问题。

  • 检查SSH隧道状态
    确认EC2上的SSH隧道进程未异常终止,执行ps aux | grep ssh查看进程是否存在;同时可在建立隧道时添加-o ServerAliveInterval=60 -o ServerAliveCountMax=3参数,防止隧道因超时断开。

内容的提问来源于stack exchange,提问作者jkode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:37:44