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

如何通过SSH隧道从本地经远程服务器连接Postgres数据库

解决方法

有两种可行的方案,根据你的实际需求选择:

方案一:直接修改SSH隧道命令(推荐)

不需要依赖remote_server上的9996端口,直接通过SSH隧道把本地端口映射到RDS实例的5432端口,一步到位。把你原来的命令替换成:

ssh -fN -L 9997:<你的RDS实例端点>:5432 ubuntu@remote_server

替换<你的RDS实例端点>为实际的Amazon RDS地址(比如my-db.c123456.us-west-2.rds.amazonaws.com)。这样本地访问localhost:9997就等同于直接访问RDS的5432端口,所有流量通过remote_server中转,完全满足你的访问需求。

方案二:在remote_server上搭建端口转发(保留9996端口)

如果必须通过remote_server的9996端口中转,就在remote_server上用socat工具实现端口转发:

  1. 先在remote_server上安装socat(如果没装的话):
    sudo apt update && sudo apt install socat
    
  2. 执行转发命令:
    socat TCP-LISTEN:9996,fork TCP:<你的RDS实例端点>:5432
    
    这个命令会把remote_server上9996端口收到的所有TCP流量,转发到RDS的5432端口。fork参数保证能同时处理多个连接。
  3. 如果需要让这个转发后台持续运行,加nohup和&:
    nohup socat TCP-LISTEN:9996,fork TCP:<你的RDS实例端点>:5432 &
    

注意事项

  • 确保remote_server能正常解析RDS的端点地址,并且网络能连通5432端口(你已经有psql访问权限,这一点应该没问题)
  • 如果9996端口是低于1024的特权端口,执行socat需要sudo权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:47:35