如何使用 IntelliJ 和 JDBC 建立 SSH 隧道并连接到数据库?
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
测试连接后连接returns 成功。在我的程序中,我有:
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
URL参数是IntelliJ生成的。然而,这给了我一个错误 "Connection to localhost:28017 refused."
对我做错了什么有什么想法吗?
您是否从像 SSHJ (https://github.com/hierynomus/sshj) 这样的 java 客户端连接到 SSH 服务器?
您的 DriverManager 上的 URL 似乎有误:尝试改用端口 11100。
如果有人正在寻找没有外部库的简单解决方案,这是我通过 intellij 进行的设置。
- 打开数据库视图(视图 -> 工具 Windows -> 数据库)。
- 添加新的DataSource(右击,New -> Data Source ->
Postgres/Mysql)。 在主机中,使用 127.0.0.1(不是本地主机,有时
本地主机未正确解析)。
- 填写远程主机上配置的其余字段。
现在单击 SSH/SSL 选项卡并配置 ssl 隧道:
如果错误是Exhausted available authentication methods
❶,请确保在需要时提供密码。这很容易忘记,因为密码通常由 OS 密钥环管理器自动提供,这使得密钥看起来好像没有。
❸中的凭据适用于 Postgres。这些不适用于对等身份验证。就我而言,我在 pg_hba.conf
:
中需要这个
hostnossl all rdahl 127.0.0.1/32 md5
❹中的代理主机和用户是从客户端看到的ssh服务器。
JetBrains 的文档很奇怪,让我怀疑这是否只是使用现有的 SSH 隧道,或者它是否创建了一个。它 创建 一个。
两个对话框中的 Test Connection
按钮都触发相同的测试。
我在使用 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
测试连接后连接returns 成功。在我的程序中,我有:
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
URL参数是IntelliJ生成的。然而,这给了我一个错误 "Connection to localhost:28017 refused."
对我做错了什么有什么想法吗?
您是否从像 SSHJ (https://github.com/hierynomus/sshj) 这样的 java 客户端连接到 SSH 服务器?
您的 DriverManager 上的 URL 似乎有误:尝试改用端口 11100。
如果有人正在寻找没有外部库的简单解决方案,这是我通过 intellij 进行的设置。
- 打开数据库视图(视图 -> 工具 Windows -> 数据库)。
- 添加新的DataSource(右击,New -> Data Source -> Postgres/Mysql)。 在主机中,使用 127.0.0.1(不是本地主机,有时 本地主机未正确解析)。
- 填写远程主机上配置的其余字段。
现在单击 SSH/SSL 选项卡并配置 ssl 隧道:
如果错误是Exhausted available authentication methods
❶,请确保在需要时提供密码。这很容易忘记,因为密码通常由 OS 密钥环管理器自动提供,这使得密钥看起来好像没有。
❸中的凭据适用于 Postgres。这些不适用于对等身份验证。就我而言,我在 pg_hba.conf
:
hostnossl all rdahl 127.0.0.1/32 md5
❹中的代理主机和用户是从客户端看到的ssh服务器。
JetBrains 的文档很奇怪,让我怀疑这是否只是使用现有的 SSH 隧道,或者它是否创建了一个。它 创建 一个。
两个对话框中的 Test Connection
按钮都触发相同的测试。