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

如何通过AWS SSM建立隧道从本地访问私有API Gateway并解决连接重置问题

核心错误原因

你当前报错的核心原因是SSH端口转发命令中错误的在目标域名后拼接了API路径/abc,SSH端口转发仅处理传输层的端口映射,无法识别应用层的路径参数,会导致域名解析/转发规则失效,触发连接重置

配置步骤

1. 修正隧道转发命令

你可以选择以下两种SSM隧道方案任意一种:

方案A:原生SSM端口转发(无需SSH密钥,推荐)

aws ssm start-session --target i-xxx \
  --document-name AWS-StartPortForwardingSessionToRemoteHost \
  --parameters '{"host":["xxx.execute-api.us-east-1.amazonaws.com"],"portNumber":["443"], "localPortNumber":["5001"]}'

方案B:SSH over SSM(兼容你原有使用习惯)

  • 先配置本地SSH规则,在~/.ssh/config中新增如下内容:
    host i-* mi-*
        ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
    
  • 执行修正后的端口转发命令:
    ssh ec2-user@i-xxx -NL 5001:xxx.execute-api.us-east-1.amazonaws.com:443 -i key.pem -v
    

2. 解决API Gateway域名匹配问题

API Gateway依赖请求的Host头匹配路由,直接访问https://localhost:5001会因为Host头不匹配被拒绝,可选择以下任意一种方案解决:

  • 方案1:修改本地hosts文件
    新增hosts记录:
    127.0.0.1 xxx.execute-api.us-east-1.amazonaws.com
    
    访问时直接请求https://xxx.execute-api.us-east-1.amazonaws.com:5001/abc/[你的接口路径],忽略Chrome的证书不安全警告即可正常访问。
  • 方案2:修改请求Host头
    使用Header Editor等Chrome插件,在请求https://localhost:5001时,将Host头修改为xxx.execute-api.us-east-1.amazonaws.com,路径正常携带/abc/[你的接口路径]即可。

3. 连通性验证

执行以下curl命令验证隧道是否正常工作:

curl -v https://xxx.execute-api.us-east-1.amazonaws.com:5001/abc \
  --resolve xxx.execute-api.us-east-1.amazonaws.com:5001:127.0.0.1 -k

返回预期API响应则说明隧道配置正确。

常见排查点
  • 确认EC2实例安全组出方向允许443端口访问API Gateway VPC Endpoint的安全组
  • 确认API Gateway VPC Endpoint的安全组入方向允许EC2实例安全组访问443端口
  • 确认EC2实例已正常安装运行SSM Agent,本地AWS CLI已配置SSM访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:24:00