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

通过SSH隧道配置Debezium源连接器连接PostgreSQL报Connection refused错误

问题排查解决步骤
  • 首先确认Debezium(Kafka Connect服务)的运行环境
    你本地的Dbeaver/PgAdmin能连接,是因为SSH隧道搭建在你本地机器上,你本地访问localhost:6432指向的是本地的隧道转发端口。如果Debezium运行在Docker容器、远程服务器、K8s集群等非你本地的环境中,它访问的localhost是自身所在的运行环境,不是你本地机器,自然无法连接到你本地的隧道端口。
    对应的解决方案:
    1. 如果Debezium和你本地机器在同一局域网内,搭建SSH隧道时绑定所有网卡地址:ssh -L 0.0.0.0:6432:<PostgreSQL实际地址>:<PostgreSQL实际端口> <SSH跳板机账号>@<SSH跳板机地址>,同时将连接器配置里的database.hostname改为你本地机器的局域网IP,不要使用localhost
    2. 如果Debezium运行在公网/其他隔离网络,直接将SSH隧道搭建在Debezium所在的机器上,或者更换为PostgreSQL的可直接访问地址
  • 验证隧道端口监听状态
    在你搭建SSH隧道的机器上执行命令查看端口绑定情况:
    ss -tulpn | grep 6432
    
    正常输出应该显示监听地址为127.0.0.1:6432或者0.0.0.0:6432,如果没有对应监听进程,说明SSH隧道未建立成功,需要重新建立隧道并检查跳板机连通性。
  • 在Debezium运行环境手动验证连通性
    进入Debezium所在的运行环境(比如Docker容器用docker exec -it <容器ID> /bin/bash进入),执行以下命令测试连接:
    # 测试端口连通性
    nc -zv localhost 6432
    # 测试数据库连通性(需安装psql客户端)
    psql -h localhost -p 6432 -U test -d postgres
    
    如果这一步无法连接,说明是网络层面的问题,和Debezium配置无关,先排查网络连通性即可。
  • 修正配置文件隐含错误(非当前连接报错原因,避免后续运行异常)
    你当前的连接器配置存在两处错误:
    1. transforms配置重复,第一次定义为unwrap,第二次直接覆盖为route,导致unwrap transform不生效,需要改为"transforms":"unwrap,route"
    2. 正则匹配规则写错,([^.]+).(^.]+).([^.]+)里的第二个分组符号写反,应该改为([^.]+).([^.]+).([^.]+)
  • 本地环境运行的额外检查
    如果确认Debezium和SSH隧道都运行在你本地机器上仍然报错,检查本地防火墙/SELinux规则是否限制了6432端口的本地回环访问,或者是否有其他进程占用了6432端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:03