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

Terraform通过堡垒机连接Aurora PostgreSQL RDS超时,如何解决?

解决Terraform Cloud连接Aurora PostgreSQL超时问题

核心问题分析

你当前在本地堡垒机建立的是本地端口转发,仅能让本地机器通过127.0.0.1:5432访问RDS,但Terraform Cloud是远程执行环境,无法复用这个本地隧道,导致直接连接堡垒机5432端口超时。


推荐解决方案:用PostgreSQL Provider内置SSH隧道

PostgreSQL Provider支持直接配置SSH隧道,让Terraform Cloud自行建立到堡垒机的连接并转发到RDS,无需依赖本地隧道。

修改Provider配置

# 定义敏感变量存储SSH私钥(在Terraform Cloud Workspace中配置)
variable "ssh_private_key" {
  type      = string
  sensitive = true
}

provider "postgresql" {
  host            = "my-rds-instance" # 填RDS实际端点,不是堡垒机
  port            = 5432
  database        = "postgres"
  username        = "some-user"
  password        = module.db.cluster_master_password
  sslmode         = "require"
  connect_timeout = 15

  # 配置SSH隧道
  ssh_host        = "my-bastion-hostname"
  ssh_port        = 22 # 堡垒机SSH默认端口,按需修改
  ssh_user        = "ec2-user"
  ssh_private_key = var.ssh_private_key
}

配置Terraform Cloud

  1. 进入对应Workspace的Variables页面
  2. 添加敏感环境变量ssh_private_key,值为你的SSH私钥内容(不要带文件路径)

备选方案:改用远程端口转发

如果不想修改Provider配置,可将本地端口转发改为远程端口转发,让堡垒机对外暴露转发端口给Terraform Cloud:

修改SSH隧道命令

ssh -R 5432:my-rds-instance:5432 my-bastion-hostname -i ~/.ssh/some-key -l ec2-user -N
  • -R:将堡垒机的5432端口转发到RDS实例
  • -N:仅建立隧道,不执行远程命令

配套检查项

  1. 堡垒机安全组:放行Terraform Cloud的IP访问5432端口
  2. RDS安全组:放行堡垒机的私有IP访问5432端口
  3. 堡垒机本地防火墙:确保iptables/ufw等允许5432端口入站

额外排查步骤

  • 验证Terraform Cloud IP连通性:在Terraform中添加null_resource执行telnet my-bastion-hostname 22(用方法1时)或telnet my-bastion-hostname 5432(用方法2时),排查端口是否可达
  • 测试堡垒机到RDS的连通性:在堡垒机上执行psql -h my-rds-instance -p 5432 -U some-user postgres,确认能正常连接
  • 检查安全组规则:确保所有入站/出站规则的IP、端口配置无错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:17:30