Networking
使用埠轉發到另一台機器訪問遠端 PostgreSQL 伺服器
我嘗試訪問執行 PostgreSQL 的Server_A。該伺服器位於本地網路上,這就是為什麼我必須從可訪問且位於同一網路中的Server_B轉發埠。
要訪問Server_B上的 postgreSQl ,我可以像這樣輕鬆地轉發埠:
ssh -L 54320:Server_A:5432 user@Server_B
在另一個終端:
psql -p 54320 -d db_name -U user
我的問題是我想重現從Server_B網路中存在的機器完成的連接。這台機器可以使用以下命令將自己連接到數據庫:
psql -h Server_A -p 5432 -d db_name -U user
我其實有問題:
我無法使用 ssh 命令轉發 5432 埠:
通過插入
5432:Server_A:5432
ssh 命令轉發 5432 埠,我有這個錯誤:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我無法解析主機名:
我沒有直接從server_A轉發埠,而是嘗試從 Server_B 轉發埠以在命令中包含
-h
參數。psql
ssh -L 5432:127.0.0.1:5432 user@Server_B
和 :
psql -h Server_A -p 5432 -d db_name -U user
但是在這裡,主機名無法解析…
有什麼解決辦法嗎?
這個命令:
ssh -L 54320:Server_A:5432 user@Server_B
看起來不錯,但是當這樣做時:
psql -p 54320 -d db_name -U user
不使用 ssh 隧道,因為預設情況下在 Unix 上
psql
連接到Unix 域套接字,就像您提到的錯誤消息所建議的那樣(“…接受 Unix 域套接字上的連接…”)你只是缺少一個
-h localhost
選項。嘗試:psql -p 54320 -d db_name -U user -h localhost
之前已經建立了一個 ssh 隧道,
localhost:54320
這將到達 postgres 上。Server_A:5432``Server_B``Server_A:5432