如何使用IntelliJ和JDBC进行SSH隧道连接并连接到数据库?

ech*_*ida 5 java ssh jdbc intellij-idea ssh-tunnel

我在使用IntelliJ和JDBC连接到服务器上托管的数据库时遇到问题。使用命令行,命令:

ssh username@server -L 11100:ct1:28017 -N
Run Code Online (Sandbox Code Playgroud)

成功创建隧道,命令:

psql db_name -h localhost -p 11100 db_username
Run Code Online (Sandbox Code Playgroud)

可以很好地连接到数据库,并允许我使用它。如何将其正确转换为IntelliJ数据源和SSH隧道工具?

目前,对于SSH隧道设置,我有:

代理主机:服务器

端口:22

代理用户:用户名

对于常规选项卡,我有:

主机:localhost

端口:28017

数据库:db_name

用户:db_username

测试连接后,连接成功返回。在我的程序中,我有:

Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
Run Code Online (Sandbox Code Playgroud)

URL参数是IntelliJ生成的参数。但是,这给我一个错误“拒绝连接到localhost:28017”。

关于我在做什么错的任何想法吗?

gmo*_*ode 8

如果有人正在寻找没有外部库的简单解决方案,这是我通过 intellij 的设置。

  1. 打开数据库视图(视图 -> 工具窗口 -> 数据库)。
  2. 添加新的数据源(右键单击,新建 -> 数据源 -> Postgres/Mysql)。在主机中,使用 127.0.0.1(不是本地主机,有时本地主机没有正确解析)。
  3. 填写远程主机上配置的其余字段。

在此处输入图片说明

现在单击 SSH/SSL 选项卡并配置 ssl 隧道:

在此处输入图片说明


Xvo*_*lks 1

您是否从像 SSHJ ( https://github.com/hierynomus/sshj ) 这样的 Java 客户端连接到 SSH 服务器?

DriverManager 上的 URL 似乎错误:请尝试使用端口 11100。