我在使用IntelliJ和JDBC连接到服务器上托管的数据库时遇到问题。使用命令行,命令:
ssh username@server -L 11100:ct1:28017 -N
成功创建隧道并执行命令:
psql db_name -h localhost -p 11100 db_username
连接数据库很好,允许我使用它。如何将其正确转换为IntelliJ数据源和SSH隧道工具?
目前,我有SSH隧道设置:
代理主机:服务器
港口:22
代理用户:用户名
对于我的常规标签:
host:localhost
port:28017
数据库:db_name
user:db_username
测试连接后连接成功返回。在我的计划中,我有:
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
URL参数是IntelliJ生成的参数。然而,这给了我一个错误“连接到localhost:28017拒绝。”
关于我做错的任何想法?
答案 0 :(得分:1)
您是否从SSHJ(https://github.com/hierynomus/sshj)等Java客户端连接到SSH服务器?
您的DriverManager上的URL似乎有误:尝试端口11100。
答案 1 :(得分:1)
如果有人正在寻找没有外部库的简单解决方案,这是我通过intellij进行的设置。
现在单击SSH / SSL选项卡并配置ssl隧道:
答案 2 :(得分:0)
如果错误是Exhausted available authentication methods
(1),请确保根据需要提供密码短语(2)。这很容易忘记,因为密码短语通常是由OS密钥管理器自动提供的,这使得该密钥似乎没有密钥。
(3)中的凭据用于Postgres。这些将不适用于对等身份验证。就我而言,我需要在pg_hba.conf
中使用它:
hostnossl all rdahl 127.0.0.1/32 md5
(4)中的代理主机和用户用于ssh服务器,如从客户端看到的那样。
JetBrains的文档很奇怪,让我怀疑这是否只是使用现有的SSH隧道,或者它是否创建了一个。它创建一个。
两个对话框中的Test Connection
按钮都触发相同的测试。