Linux

如何從 WSL2 內部連接到 Windows 主機上執行的 Postgres?

  • November 10, 2020

我的 Windows 機器上執行了 Postgres,我需要從 WSL2 內部連接到它。

  • postgres windows 服務正在執行
  • 我可以使用從 Windows 命令行連接到它psql
  • WSL2 vm 的 IP 是172.31.210.120, 網路遮罩255.255.240.0(使用 確定ipfconfig)。
  • vm內部的windows主機的IP是172.31.208.1(使用確定cat /etc/resolv.conf
  • 我可以使用curl http://172.31.208.1:8080. 如果我記錄傳入請求的 IP,我會得到172.31.210.120這樣的資訊,這會驗證兩個 IP 是否正確。
  • 我將以下行添加到pg_hba.confhost all all 172.31.210.120/20 scram-sha-256
  • 我重新啟動了 postgres windows 服務

如果我嘗試使用以下命令從 WSL 連接到它:

$ psql --host=172.31.208.1 --port=5432 --user=postgres

我收到此錯誤:

psql: error: could not connect to server: could not connect to server: Connection timed out
       Is the server running on host "172.31.208.1" and accepting
       TCP/IP connections on port 5432?

注意:我也嘗試使用測試連接,telnet但它也失敗了。

下面的日誌c:\Program Files\PostgreSQL\13\data\log\沒有顯示任何錯誤或任何跡象表明存在連接嘗試。

我在這裡想念什麼?

如果有人遇到同樣的問題,我是這樣解決的:

我需要添加一個 Windows 防火牆規則:

  • 打開“具有高級安全性的 Windows Defender 防火牆”(您可以通過在開始菜單中搜尋找到它)

  • 點擊“新規則…”

  • 創建新的 TCP/IP 規則

    • 協議:TCP
    • 埠:5432
    • 允許連接
  • 添加後,點擊新創建的規則並從側邊欄中選擇“屬性…”

  • 在 Scope 選項卡上,指定 WSL2 虛擬機的 IP 地址(例如 172.31.208.0/24)

如果您在我最初的問題中執行其他所有操作(獲取兩個 IP,將 VM IP 添加到pg_hba.conf),那麼從 WSL2 命令行連接到主機 IP 將起作用。

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