Windows 11下创建SSH隧道连接PostgreSQL失败:命令语法问题求助
解决SSH隧道创建失败的问题
你的ssh -L 3307:dbhost:22命令存在语法错误,本地端口转发的正确格式为:
ssh -L [本地端口]:[目标主机]:[目标端口] [SSH服务器]
命令错误原因
- 混淆了SSH服务器端口与目标服务端口:你把SSH连接的端口(22)当成了Postgres服务的端口,而实际需要转发的是Postgres的默认端口
5432 - 缺少SSH服务器参数:命令末尾未指定要连接的SSH主机(即你配置文件中的
dbhost)
正确的隧道创建命令
结合你的HeidiSQL配置,正确命令应为:
ssh -L 3307:localhost:5432 dbhost
-L 3307:localhost:5432:将本地3307端口的请求,转发到SSH服务器(dbhost对应11.11.11.11)本机的Postgres服务(localhost:5432)dbhost:调用你~/.ssh/config中预定义的SSH配置,自动使用指定的IP、用户名和密钥文件建立连接
如果需要让隧道在后台运行,可添加-fN参数:
ssh -fN -L 3307:localhost:5432 dbhost
验证隧道有效性
执行命令后,可通过Postgres客户端测试连接:
psql -h 127.0.0.1 -p 3307 -U [你的Postgres用户名] [目标数据库名]
连接成功后,即可在C#代码中使用127.0.0.1:3307作为Postgres服务器地址进行连接。
内容的提问来源于stack exchange,提问作者juliano.net
相关产品推荐
相关产品推荐

