Database 通过IntelliJ IDEA中的两个ssh隧道连接到数据库

Database 通过IntelliJ IDEA中的两个ssh隧道连接到数据库,database,intellij-idea,ssh,datasource,ssh-tunnel,Database,Intellij Idea,Ssh,Datasource,Ssh Tunnel,我正试图在IntelliJ IDEA Ultimate中添加一个postgresql数据库作为数据源。 我已经通过一个ssh隧道使用了一个数据源。但是现在数据库服务器位于防火墙后面,防火墙只接受来自管理服务器的ssh连接。访问db服务器的唯一方法是通过管理服务器 因此,我(或IntelliJ)必须通过ssh连接到此服务器,然后通过使用另一个用户,通过ssh隧道连接到数据库服务器 一切都清楚了吗-D 问题是IntelliJ只提供配置一个ssh隧道。但是在第一个隧道之后,我需要使用第二个隧道,以最终

我正试图在IntelliJ IDEA Ultimate中添加一个postgresql数据库作为数据源。
我已经通过一个ssh隧道使用了一个数据源。但是现在数据库服务器位于防火墙后面,防火墙只接受来自管理服务器的ssh连接。访问db服务器的唯一方法是通过管理服务器

因此,我(或IntelliJ)必须通过ssh连接到此服务器,然后通过使用另一个用户,通过ssh隧道连接到数据库服务器

一切都清楚了吗-D

问题是IntelliJ只提供配置一个ssh隧道。但是在第一个隧道之后,我需要使用第二个隧道,以最终连接到数据库服务器。。。 有什么想法吗

Thx提前

我会使用OpenSSH或任何类似工具创建一个将
127.0.0.1:2222
通过管理服务器转发到
firewall:22
,然后使用IntelliJ IDEA隧道配置来
127.0.0.1:2222
,就像处理单个隧道一样

ssh-L 127.0.0.1:2222:防火墙:22


您可以配置以自动化此过程。在Windows机器上,我在创建隧道/端口转发并自动启动它们方面有着丰富的经验。

ssh
支持您的开箱即用方案。诀窍是在管理服务器的
~/.ssh/config
文件中创建两个条目,一个用于
您的用户
,另一个用于
特殊用户
。然后使用
ProxyJump
将连接链接在一起

因此,首先为管理服务器和从本地计算机连接到的用户设置一个
Host
部分:

Host mgmt
    HostName management.server.com
    User your-user
    ...
    
然后,在您要登录的管理服务器上为用户设置主机:

Host mgmt-special-user
    HostName management.server.com
    User special-user
对于同一台主机,添加一条指令,告知
ssh
创建数据库隧道:

    LocalForward <free-port-on-your-box> <db-ip-or-host>:<db-port>
现在,您可以从本地计算机
ssh管理特殊用户
ssh
将自动跳转通过
mgmt
主机,还将自动通过
mgmt
扩展隧道并返回到本地计算机


ProxyJump
-J
)添加到OpenSSH 7.3(2016年发布)中。

Thx。防火墙没有真正的地址(硬件),连接只是通过它。因此,如果我将本地主机的端口转发到管理服务器,我只在那里,而不在db服务器上?ssh连接到数据库服务器本身的地址或方式?然后您只需通过管理服务器将端口转发到数据库服务器,并作为本地主机连接到数据库,然后通过管理服务器和防火墙将其转发到数据库服务器。因此,我必须在管理服务器上添加端口转发,是吗?是的,从你描述的来看,这似乎是一条路要走。
    ProxyJump mgmt