How to SSH tunnel and connect to a database using IntelliJ and JDBC?

别说谁变了你拦得住时间么 提交于 2019-12-21 12:57:26

问题


I'm having issues connecting to a database hosted on a server using IntelliJ and JDBC. With the command line, the command:

ssh username@server -L 11100:ct1:28017 -N

creates a tunnel successfully and the command:

psql db_name -h localhost -p 11100 db_username

connects to the database fine and allows me to use it. How would this be translated correctly into the IntelliJ Data Sources and the SSH tunnel tools?

At the moment, for the SSH tunnel settings I have:

Proxy Host: server

Port: 22

Proxy user: username

For the general tab I have:

host: localhost

port: 28017

database: db_name

user: db_username

The connection returns successfully after testing the connection. Inside my program I have:

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

The URL parameter is the one generated by IntelliJ. This however gives me an error "Connection to localhost:28017 refused."

Any ideas on what I am doing wrong?


回答1:


Do you connect to SSH server from a java client like SSHJ (https://github.com/hierynomus/sshj) ?

The URL on your DriverManager seems wrong: try port 11100 instead.




回答2:


Here's my setup via intellij if anyone is looking for simple solution without external libraries.

  1. Open Database view (View -> Tool Windows -> Database).
  2. Add new DataSource (right-click, New -> Data Source -> Postgres/Mysql). In host, use 127.0.0.1 (not localhost, sometimes localhost is not properly resolved).
  3. Fill in rest of the fields as configured on your remote host.

Now click on SSH/SSL tab and configure ssl tunnel:



来源:https://stackoverflow.com/questions/35337054/how-to-ssh-tunnel-and-connect-to-a-database-using-intellij-and-jdbc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!