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

如何将Cloud SQL(PostgreSQL)作为SSH主机实现Datastream连接?

解决Datastream通过SSH隧道连接Cloud SQL PostgreSQL的问题

首先纠正一个关键误解:Cloud SQL实例默认没有运行SSH服务,无法直接作为SSH隧道的终端节点。你需要部署一台Google Compute Engine(GCE)虚拟机作为SSH堡垒机,Datastream先连接堡垒机,再通过堡垒机转发流量到Cloud SQL实例。

以下是分步解决方案:

一、部署并配置GCE SSH堡垒机

  • 创建一台GCE虚拟机,建议与Cloud SQL实例处于同一VPC网络(或通过VPC peering连通),若使用公网连接则需为堡垒机分配外部IP。
  • 为堡垒机添加实例标签(如datastream-bastion),方便后续配置防火墙规则。
  • 在堡垒机的操作系统中启用SSH服务(默认已启用),并确保系统防火墙允许22端口入站:
    • Ubuntu/Debian:sudo ufw allow 22 && sudo ufw reload
    • CentOS/RHEL:sudo firewall-cmd --add-port=22/tcp --permanent && sudo firewall-cmd --reload

二、配置堡垒机的防火墙规则

在VPC网络控制台创建 ingress 防火墙规则:

  • 目标:选择“指定目标标签”,填入堡垒机的实例标签(如datastream-bastion)
  • 来源IP范围:填入Datastream服务的出口IP段(可在Google Cloud控制台的Datastream区域设置中查询,或通过gcloud datastream locations describe <区域>命令获取)
  • 协议和端口:选择tcp:22
  • 优先级:设置为低于默认拒绝规则的数值(如1000)

三、Cloud SQL端的必要配置

  • 授权堡垒机访问:在Cloud SQL控制台的“连接”>“授权网络”中,添加堡垒机的内部IP(同VPC时)或外部IP(公网连接时),允许其访问5432端口。
  • SSL证书配置:
    1. 在Cloud SQL控制台“连接”>“SSL证书”中,创建新的客户端证书,下载客户端证书(.crt)、客户端密钥(.key)和服务器CA证书(.pem)。
    2. 确保Cloud SQL的SSL设置为“要求SSL连接”(已配置的话再次确认)。

四、Datastream的SSH隧道连接配置

在Datastream创建数据源连接时:

  • SSH隧道设置:
    • 隧道服务器地址:填写堡垒机的外部IP
    • SSH端口:默认22(若修改了堡垒机SSH端口则对应调整)
    • SSH用户名:填写堡垒机的SSH登录用户名(如ubuntu)
    • SSH私钥:上传堡垒机的SSH私钥(需提前生成密钥对,公钥已添加到堡垒机的~/.ssh/authorized_keys中)
  • 数据库连接设置:
    • 主机名:填写Cloud SQL的内部IP(同VPC时)或公网IP
    • 端口:5432
    • SSL证书:上传之前下载的Cloud SQL客户端证书、客户端密钥和CA证书
    • 数据库用户名、密码:填写Cloud SQL的数据库账户信息

五、连通性验证步骤

  1. 测试堡垒机22端口可达性:在本地终端执行nc -zv <堡垒机IP> 22,若返回succeeded!则端口已开放;若失败,检查VPC防火墙规则和堡垒机系统防火墙。
  2. 测试堡垒机到Cloud SQL的连接:在堡垒机上执行psql "host=<Cloud SQL IP> port=5432 dbname=<数据库名> user=<用户名> sslmode=verify-ca sslrootcert=server-ca.pem sslcert=client-cert.pem sslkey=client-key.pem",确认能成功连接数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:49:52