Networking

使用埠轉發到另一台機器訪問遠端 PostgreSQL 伺服器

  • July 19, 2016

我嘗試訪問執行 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:5432ssh 命令轉發 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

引用自:https://serverfault.com/questions/790412