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

如何通过GCE搭建SSH隧道实现Cloud Run访问白名单SQL Server数据库

GCE SSH隧道打通SQL Server供Cloud Run访问方案

现有隧道命令连接失败排查

  • 先验证基础网络连通性:登录GCE实例直接执行telnet <跳板机公网IP> 22确认能正常连SSH跳板机,再登录SSH跳板机执行telnet <SQL Server公网IP> 1433确认跳板机本身能访问数据库,同时确认跳板机的出口IP已经加入SQL Server的IP白名单,白名单配置错了后续所有操作都不会生效。
  • 检查SSH跳板机转发配置:登录跳板机查看/etc/ssh/sshd_config配置项,确认AllowTcpForwarding值为yes,如果需要让隧道监听非本地地址还要把GatewayPorts设为yes,修改后执行systemctl restart sshd重载配置,配置错误会直接导致端口转发失效。
  • 修正隧道监听地址问题:你之前执行的命令把隧道绑定在127.0.0.1上,只有GCE实例本地进程能访问1444端口,Cloud Run服务根本访问不到这个回环地址,这是后续服务连不通的核心原因。
  • 本地验证隧道可用性:隧道启动后在GCE实例本地执行sqlcmd -S 127.0.0.1,1444 -U <数据库账号> -P <数据库密码>测试连接,如果本地连不上,直接看SSH进程的报错信息:认证失败就配置SSH密钥免密登录、检查跳板机账号权限;端口占用就换个本地端口或者杀掉占用1444的进程;连接超时就检查GCE、跳板机的出站防火墙规则。

高并发场景下Cloud Run对接配置(无VPC连接器)

  • 调整隧道启动命令,绑定所有网卡同时加保活配置,避免隧道异常断连:
    ssh -L 0.0.0.0:1444:<SQL Server内网/公网IP>:1433 <跳板机账号>@<跳板机公网IP> -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes
  • 给运行隧道的GCE实例分配静态公网IP,配置GCE实例防火墙规则:仅放通Cloud Run服务的出口IP访问1444端口,禁止全网访问避免端口暴露被扫描。如果你的Cloud Run已经通过Cloud NAT配置了固定出口IP,直接把这个IP加入防火墙允许列表即可,安全性和数据库原生白名单逻辑一致。
  • 把SSH隧道配置为systemd常驻服务,配置进程异常自动重启、实例开机自启,不要用手动敲命令的方式跑临时进程,避免服务意外中断。
  • Cloud Run侧的数据库连接地址直接填GCE实例的静态公网IP+1444端口即可,连接参数和普通SQL Server连接完全一致。该方案的并发上限取决于GCE实例的CPU、内存规格和系统TCP连接数配置,选e2-medium以上规格即可轻松支撑上千并发连接,不存在VPC连接器的100并发上限问题。
  • 稳定性优化:可以搭建2台跨可用区的GCE实例同时跑隧道,在Cloud Run的数据库连接配置里加故障转移地址,单条隧道或者单实例故障时自动切到备用隧道,可用性可以达到99.9%以上。

安全提示:隧道端口绝对不能对0.0.0.0/0开放,必须严格限制源IP范围,避免未授权访问数据库。如果对传输安全性要求高,可以在GCE和Cloud Run之间再加一层轻量TCP代理做TLS加密,不过SSH本身已经做了链路加密,常规业务场景下足够安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:54:33