[英]How to SSH tunnel and connect to a database using IntelliJ and JDBC?
我在使用 IntelliJ 和 JDBC 連接到托管在服務器上的數據庫時遇到問題。 使用命令行,命令:
ssh username@server -L 11100:ct1:28017 -N
成功創建隧道,命令:
psql db_name -h localhost -p 11100 db_username
連接到數據庫很好,並允許我使用它。 這將如何正確轉換為 IntelliJ 數據源和 SSH 隧道工具?
目前,對於 SSH 隧道設置,我有:
代理主機:服務器
端口:22
代理用戶:用戶名
對於常規選項卡,我有:
主機:本地主機
端口:28017
數據庫:db_name
用戶:db_username
連接測試后連接成功返回。 在我的程序中,我有:
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
URL 參數是 IntelliJ 生成的參數。 然而,這給了我一個錯誤“連接到 localhost:28017 被拒絕”。
關於我做錯了什么的任何想法?
您是否從像 SSHJ ( https://github.com/hierynomus/sshj ) 這樣的 Java 客戶端連接到 SSH 服務器?
DriverManager 上的 URL 似乎有誤:請嘗試使用端口 11100。
如果錯誤是Exhausted available authentication methods
(1) ,請確保在需要時提供密碼短語(2) 。 這很容易忘記,因為密碼短語通常由操作系統密鑰環管理器自動提供,這使得密鑰似乎沒有。
(3)中的憑據用於 Postgres。 這些不適用於對等身份驗證。 就我而言,我在pg_hba.conf
需要這個:
hostnossl all rdahl 127.0.0.1/32 md5
(4)中的代理主機和用戶是從客戶端看到的 ssh 服務器。
JetBrains 的文檔很奇怪,讓我懷疑這是否只是使用現有的 SSH 隧道,或者它是否創建了一個。 它創造了一個。
兩個對話框中的Test Connection
按鈕都觸發相同的測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.