如何实现Power BI通过SSH隧道连接EC2上Docker部署的PostgreSQL实例
解决Power BI连接EC2 Docker中PostgreSQL的SSH隧道问题
办法1:本地通过SSH命令建立端口转发(推荐)
这是最安全且无需额外工具的方案,Windows 10/11、Mac、Linux系统默认支持SSH命令。
- 步骤1:确认EC2上的Docker容器已将PostgreSQL端口映射到EC2主机,比如启动容器时执行过
docker run -p 5432:5432 ...,把容器的5432端口绑定到EC2的5432端口。 - 步骤2:在本地终端/命令提示符里执行隧道命令:
说明:ssh -i "/path/to/your-key.pem" -L 5432:localhost:5432 ec2-user@<EC2的公网IP或域名>-i指定你的PEM密钥文件路径-L 5432:localhost:5432把本地5432端口转发到EC2主机的5432端口(即Docker内的PostgreSQL端口)ec2-user是EC2默认用户名,若你修改过则用对应名称
- 步骤3:保持终端窗口开启(关闭会导致隧道断开),打开Power BI的PostgreSQL连接对话框:
- 服务器填
localhost,端口填5432 - 填入PostgreSQL对应的数据库名、用户名、密码,正常连接即可
- 服务器填
办法2:用PuTTY建立SSH隧道(适合旧版Windows)
如果你的Windows版本没有自带SSH命令,可以用PuTTY工具:
- 步骤1:把PEM文件转换成PuTTY支持的PPK格式:打开PuTTYgen,点击Load选择PEM文件,再点击Save private key保存为PPK文件。
- 步骤2:打开PuTTY,在Session页面填写EC2公网IP,端口选22,连接类型选SSH。
- 步骤3:左侧导航到
Connection > SSH > Auth,点击Browse选择刚才生成的PPK文件。 - 步骤4:左侧导航到
Connection > SSH > Tunnels,Source port填5432,Destination填localhost:5432,点击Add,回到Session页面点击Open建立连接。 - 步骤5:保持PuTTY窗口开启,Power BI连接时同样填
localhost:5432即可。
办法3:直接开放PostgreSQL端口(仅临时测试用)
如果只是临时测试,可跳过SSH隧道直接让Power BI访问,但需严格注意安全:
- 步骤1:修改EC2安全组,添加一条入站规则,允许Power BI所在机器的公网IP访问5432端口。
- 步骤2:修改Docker容器内的PostgreSQL配置:
- 编辑
postgresql.conf,将listen_addresses改为*(允许所有IP访问) - 编辑
pg_hba.conf,添加一行host all all <Power BI所在IP>/32 md5(允许指定IP用密码登录)
- 编辑
- 步骤3:重启PostgreSQL容器,Power BI直接填写EC2公网IP和5432端口连接即可。
内容的提问来源于stack exchange,提问作者Habchi
相关产品推荐
相关产品推荐

