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

如何通过SSH隧道将PowerBI连接至AWS RDS托管的PostgreSQL数据库?

解决PowerBI通过SSH隧道连接AWS RDS PostgreSQL的问题

我之前帮不少用户排查过类似的情况——Putty能正常连SSH,但PowerBI就是连不上数据库,大概率是端口转发配置不到位或者PowerBI连接参数填错了,下面一步步给你梳理解决思路:

1. 先确认Putty的SSH隧道配置是否正确

这是最容易踩坑的环节,一定要仔细核对:

  • 打开Putty,加载你保存的SSH会话,进入Connection > SSH > Tunnels
  • 在「Source port」里填一个本地未被占用的端口(比如5433,避开默认的5432,防止和本地PostgreSQL服务冲突)
  • 在「Destination」里严格填写你的RDS PostgreSQL端点+端口,格式为:your-rds-endpoint.xxxxxx.your-region.rds.amazonaws.com:5432
  • 勾选「Local」和「Auto」,点击「Add」,确认这条转发规则出现在上方列表(应该显示为L5433 -> your-rds-endpoint:5432)
  • 回到「Session」标签重新保存会话,再连接SSH,确保隧道一直保持活跃状态

2. 验证本地端口是否真的在监听

配置好隧道后,先确认本地端口已经在正常转发:

  • 打开Windows的PowerShell或命令提示符,运行:
    netstat -ano | findstr :5433
    
    (把5433换成你设置的本地端口)
  • 如果看到状态为LISTENING的条目,说明隧道生效;如果没有,回到Putty检查配置,或者重启Putty连接

3. 正确配置PowerBI的连接参数

很多人在这里犯错误——直接填RDS端点,这是不对的,因为隧道已经把本地端口映射到RDS了:

  • 打开PowerBI,点击「获取数据」>「PostgreSQL数据库」
  • 服务器栏填:localhost:5433(就是你刚才设置的本地端口)
  • 数据库栏填你的RDS PostgreSQL的数据库名称(不是端点!)
  • 身份验证选「数据库」,输入RDS的用户名和密码,点击「确定」

4. 排查常见坑点

如果还是连不上,检查这几个地方:

  • 端口冲突:如果本地装了PostgreSQL,默认5432端口会被占用,一定要换其他端口(比如5433、5434)
  • RDS安全组规则:确保你的Bastion主机(SSH连接的服务器)的IP/安全组被允许访问RDS的5432端口。如果两者在同一个VPC里,建议在RDS安全组入站规则中添加Bastion的安全组(而非公网IP),更安全且稳定
  • Putty连接超时:Putty默认一段时间无活动会断开隧道,你可以在Connection标签设置「Seconds between keepalives」为30,让Putty定期发送心跳保持连接
  • 驱动兼容性:确保你的电脑安装了最新的PostgreSQL ODBC驱动,旧驱动可能和PowerBI兼容不佳,直接去PostgreSQL官网下载对应版本安装即可

5. 替代方案:用OpenSSH命令行建立隧道

如果你觉得Putty配置麻烦,Windows 10/11默认已安装OpenSSH客户端,可直接用命令行建立隧道:
打开PowerShell,运行:

ssh -L 5433:your-rds-endpoint.xxxxxx.your-region.rds.amazonaws.com:5432 your-bastion-user@your-bastion-ip

输入Bastion密码后保持窗口打开,再让PowerBI连接localhost:5433即可,这个方式有时候比Putty更稳定

6. 更安全的AWS专属方案:用SSM Session Manager建立隧道

如果你的Bastion主机没有公网IP(或不想暴露公网IP),可以用AWS Systems Manager的Session Manager建立隧道,无需开放SSH端口:

  1. 给Bastion实例附加包含AmazonSSMManagedInstanceCore权限的IAM角色
  2. 确保Bastion实例安装了SSM Agent(Amazon Linux 2默认已预装)
  3. 安装AWS CLI并配置好凭证,运行:
aws ssm start-session --target your-bastion-instance-id --document-name AWS-StartPortForwardingSession --parameters '{"portNumber": ["5432"], "localPortNumber": ["5433"], "host": ["your-rds-endpoint.xxxxxx.your-region.rds.amazonaws.com"]}'

之后PowerBI同样连接localhost:5433即可,这个方式更安全,无需开放任何公网端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:57:50