尋找 ssh 隧道不工作的原因

尋找 ssh 隧道不工作的原因

我有一個遠端伺服器,可以透過 SSH 訪問,沒有任何問題。我在遠端伺服器(稱為“enc”)和本機上設定了 PostgreSQL (ps),兩者都在 5432(預設)上運行。遠端伺服器不允許來自外部的連接(本地 Web 伺服器直接存取它)。

我正在嘗試設定一個 SSH 隧道,以使在遠端 ps 伺服器上運行命令比複製檔案、登入伺服器並在該端手動運行它們更容易。

我嘗試運行以下命令

ssh -N -L 5555:enc:5432 enc

隧道似乎設定正確,但是當我嘗試使用以下命令連接到遠端電腦時

psql -p 5555

它說它不工作

psql: could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5555"?

這可能是隧道設定或限制性使用者權限的問題(我想如果是這種情況,錯誤會有所不同)?

答案1

嘗試這個:

ssh -N -L 5555:enc:5432 localhost

進而

lsof -i :5555

如果您在那裡看不到任何內容,則表示您的本機電腦沒有監聽任何內容。

答案2

類型

netstat -anp | grep LISTEN | grep "port_number"

在您的伺服器電腦中尋找執行該服務的 IP 位址。

如果它是機器的 IP 位址,則必須在 ssh -L 命令中提及該位址,否則如果它是環回位址(127.0.0.1 - ipv4 或 ::1 - ipv6 ),請在命令中提及。

答案3

事實證明,他的問題出在更進一步的地方。隧道工作正常,但是嘗試連接到 postgres 時,您必須傳遞 -h (即使它是針對 localhost),否則它將嘗試通過 unix 套接字(錯誤中就在那裡)而不是通過 tcp 連接(這這是它與隧道一起使用的唯一方法)。

相關內容