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

如何通过WSL2隧道将Windows本地pgAdmin连接到CF数据库服务?

WSL2 建立CF SSH隧道供Windows pgAdmin访问解决方案

问题根因

  • WSL2默认采用NAT网络模式,宿主机Windows无法直接通过127.0.0.1访问WSL2内部监听的端口
  • 默认的cf ssh端口转发规则仅绑定WSL2内部的127.0.0.1回环接口,不会暴露给外部网络访问

解决方案1(直接绑定公网接口,配置简单)

  1. 替换WSL2内的CF SSH命令,指定转发端口绑定所有接口:
cf ssh -L 0.0.0.0:8888:servername:5432 app-name

注:如果出现端口绑定权限报错,可在命令后追加--allow-ssh参数重试
2. 放行WSL2内部防火墙的对应端口,以Ubuntu默认的ufw为例:

sudo ufw allow 8888/tcp

如果使用CentOS等带firewalld的发行版,执行:

sudo firewall-cmd --add-port=8888/tcp --permanent && sudo firewall-cmd --reload
  1. 获取WSL2当前的内网IP地址:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

执行后会输出类似172.27.12.34的IP地址,记录该地址
4. 打开Windows端的pgAdmin,新建连接时地址填写上述获取的WSL2内网IP,端口填8888,其余数据库账号密码等配置按正常规则填写即可连接。

解决方案2(端口代理模式,安全性更高)

如果不希望CF隧道端口暴露到公网,可通过Windows自带的端口代理实现127.0.0.1访问:

  1. WSL2内执行原始的CF SSH命令,仅绑定内部回环:
cf ssh -L 127.0.0.1:8888:servername:5432 app-name
  1. 按上述方案1的步骤3获取WSL2内网IP
  2. 打开Windows端的命令提示符/终端,使用管理员权限执行端口代理命令:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8888 connectaddress=<替换为WSL2的内网IP> connectport=8888
  1. 此时pgAdmin直接填写127.0.0.1端口8888即可正常访问数据库。

常见优化

WSL2重启后内网IP会自动变更,可通过以下方式简化配置:

  • 在WSL2的~/.bashrc或~/.zshrc末尾添加获取IP的命令,每次启动终端时自动打印IP
  • 编写Windows脚本自动获取WSL2 IP并更新C:\Windows\System32\drivers\etc\hosts文件,绑定固定域名如wsl.local,后续pgAdmin直接填写域名即可,无需每次修改IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:36:03