Java 如何使用IntelliJ和JDBC通过SSH隧道连接到数据库?
我在使用IntelliJ和JDBC连接到服务器上托管的数据库时遇到问题。使用命令行,命令:Java 如何使用IntelliJ和JDBC通过SSH隧道连接到数据库?,java,jdbc,intellij-idea,ssh,ssh-tunnel,Java,Jdbc,Intellij Idea,Ssh,Ssh Tunnel,我在使用IntelliJ和JDBC连接到服务器上托管的数据库时遇到问题。使用命令行,命令: ssh username@server -L 11100:ct1:28017 -N psql db_name -h localhost -p 11100 db_username 成功创建隧道,并执行以下命令: ssh username@server -L 11100:ct1:28017 -N psql db_name -h localhost -p 11100 db_username 连接到数据库
ssh username@server -L 11100:ct1:28017 -N
psql db_name -h localhost -p 11100 db_username
成功创建隧道,并执行以下命令:
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_用户名
测试连接后,连接将成功返回。在我的计划中,我有:
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:28017/db_name", user, password);
URL参数是IntelliJ生成的参数。然而,这给了我一个错误“连接到本地主机:28017被拒绝”
您知道我做错了什么吗?您是否从像SSHJ()这样的java客户机连接到SSH服务器
DriverManager上的URL似乎不正确:请尝试端口11100。如果有人正在寻找不带外部库的简单解决方案,请通过intellij执行以下设置
如果错误
用尽了可用的身份验证方法
(1),请确保在需要时提供密码短语(2)。这很容易忘记,因为密码短语通常由OS keyring manager自动提供,这使得密钥似乎没有密码
(3)中的凭证适用于博士后。这些将不适用于对等身份验证。在我的例子中,我在pg_hba.conf
中需要这个:
hostnossl all rdahl 127.0.0.1/32 md5
(4)中的代理主机和用户用于从客户端看到的ssh服务器
JetBrains的文档很奇怪,让我怀疑这是否只是使用现有的SSH隧道,或者它是否创建了一个SSH隧道。它创建一个
两个对话框中的测试连接
按钮都会触发相同的测试
端口
28017
打开了吗?@Andremoniy在服务器上,是的,它打开了。看起来您在本地使用了SSH隧道的端口11100,这是您需要在连接字符串中指定的端口号(就像您在psql db_name-h localhost-p 11100 db_username
中所做的那样)。这似乎起到了作用。我仍然使用Jsch库及其端口转发。无法应用SSH设置:找不到主机和端口。