当前位置: 首页 > 知识库问答 >
问题:

如何在我自己的代码中进行相当于IntelliJ数据库SSH隧道?

慎建本
2023-03-14

我正在试验一个位于私有子网中的AWS RDS postgres实例。

为了访问我的其他私有EC2实例,我一直在使用SSH堡垒。

这一切都很好,但后来我发现这个想法实际上已经可以帮助我访问我的私人RDS实例。

太棒了,成功了——该死的,我喜欢IDEA。

但问题是。。。它是如何工作的?

这个想法只是在幕后为我做一些疯狂的SSH隧道吗(在这种情况下,我印象更深刻)?

或者这是我可以在自己的代码中利用的Postgres JDBC驱动程序的一个功能?也就是说,有什么方法可以配置Postgres JDBC来进行SSH隧道到我的RDS实例吗?

我真的很喜欢这样的方式,避免了以前在操作系统级别设置特定的隧道配置,就像这样。

所以问题是:我如何才能在我的项目中只使用代码来做与IDEA相同的事情?

接受了jDevelopment的回答。

下面是我用来测试的groovy代码片段,供其他可能想这样做的人使用:

  JSch jsch = new JSch()
  jsch.addIdentity("~/mykeys/bastion.pem")
  jsch.setConfig("StrictHostKeyChecking", "no")
  Session session=jsch.getSession("ec2-user", bastionServer, 22)
  session.connect()

  int localPort = 65432
  session.setPortForwardingL(localPort, dbHostServer, dbHostPort)

  testDbConnection(
    "localhost", Integer.toString(localPort), dbName, dbUser, dbPassword)

  session.disconnect()

共有1个答案

云季同
2023-03-14

是的,IntelliJ为您SSH隧道。

在代码中实现这一点的最简单方法是查看JSch及其端口转发示例

 类似资料:
  • 我正在使用IntelliJ社区版和JPA Buddy开发一个Java项目(基于Spring Boot 2.6.x)。我想使用JPA Buddy进行实体实用程序和Liquibase集成。 生产数据库(MySQL 5.7)只能通过ssh隧道访问。 有没有办法使用ssh隧道配置数据库连接?如何从生产数据库生成变更日志? 谢谢米奇

  • 在IDEA中,我可以键入sout来表示系统。出来println() 我想知道如何制作自己的代码缩写。例如,alias

  • 修复(编辑代码以反映我所做的更改) 我正在尝试使用Java通过SSH隧道连接到Mongo数据库。 我正在使用Mongo驱动程序3.0.2和jcraft(JSch)创建一个SSH隧道。我的想法是: 通过SSH连接到托管MongoDB安装的机器 设置从本地端口到远程MongoDB端口的端口转发 远程连接到MongoDB 我的代码如下所示: 这段代码在运行时, 不 EDIT:有效。 连接到SSH服务器工

  • 目标是使用SSH隧道将R连接到PostgreSQL。 刚刚用库RPostgreSQL和DBI进行了不成功的尝试。我没有找到传递SSH隧道参数(代理主机、代理用户和私钥)的方法。 我想知道是否有办法在db查询字符串中指定这些SSH参数?也许还有别的出路?

  • 我正在开发一个Gradle插件。有时我想看看Gradle自己类的源代码或Javadocs。我想从IntelliJ IDEA中完成,而不必打开单独的应用程序。也就是说,在Gradle方法或类上点击Ctrl或Ctrl B,让IntelliJ打开Gradle本身的源代码。 我尝试了一切,从在IntelliJ IDEA中附加Gradle源: 正在添加

  • 问题内容: 我一直在使用Tensorflow库来完成这些教程。现在我想使用自己的数据,但是我失败了。这也许是一个菜鸟问题,但我无法弄清楚。 我正在使用此示例:[https]( https://github.com/aymericdamien/TensorFlow- Examples/blob/master/examples/3%20-%20Neural%20Networks/convolution