理解远程PostgreSQL执行pg_dump时的端口绑定:35978端口解析
关于pg_dump通过SSH隧道连接时的本地端口疑问
场景描述
我通过DBeaver客户端,借助堡垒机的SSH隧道连接远程PostgreSQL服务器,执行的pg_dump命令片段如下:
pg_dump --verbose --host=127.0.0.1 --port=47855 --username=user-accounet..
执行以下命令查看连接信息:
lsof -i -P -n | grep pg_dump
得到结果:
pg_dump 14144 parcss-alexco 3u IPv4 397966 0t0 TCP 127.0.0.1:35978->127.0.0.1:47855 (ESTABLISHED)
疑问解答
1. 端口35978是什么?
这是pg_dump进程在本地发起TCP连接时,系统自动分配的临时源端口(也叫短暂端口)。所有客户端程序发起TCP连接时,都会从操作系统预设的临时端口池中随机选取一个未被占用的端口作为自身的通信出口,这个端口不固定,每次启动pg_dump可能都会不同。
2. 35978→47855的绑定关系代表什么?
这是本地TCP连接的端口对,意思是:你的pg_dump进程(使用本地35978端口)正在与本地监听的47855端口建立连接——而47855正是DBeaver为SSH隧道创建的本地转发端口。所有发往这个本地端口的请求,都会被SSH隧道加密后转发到堡垒机,再由堡垒机转发到远程PostgreSQL服务器的真实服务端口。
3. 这涉及远程还是本地IP?
显示的两个127.0.0.1都是本地回环IP,整个连接链路的本地层面是:pg_dump(本地35978)→本地SSH隧道监听端口47855,之后的流量才会通过SSH隧道传输到远程服务器。lsof的结果仅展示本地主机上的连接状态,不会显示远程端的IP和端口信息。
内容的提问来源于stack exchange,提问作者it.drive.view
相关产品推荐
相关产品推荐

