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

时间:2019-02-27 06:49:44

标签: database intellij-idea ssh datasource ssh-tunnel

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

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

一切都清楚了吗? :-D

问题是,IntelliJ仅提供配置一个ssh隧道的功能。但是在第一个隧道之后,我需要使用第二个隧道,以最终连接到数据库服务器... 有任何想法吗?

提前谢谢。

enter image description here

2 个答案:

答案 0 :(得分:1)

我将使用OpenSSH或任何类似的工具创建一个local port forward,该工具将通过管理服务器将df_wilcox<-df1[df1$ks_AB<0.05,] df_ttest_equal<-df1[df1$ks_AB>=0.05 & df1$var_AB>=0.05,] df_ttest_unequal<-df1[df1$ks_AB>=0.05 & df1$var_AB<0.05,] 转发到wilcox_AB<-as.matrix(apply(df_wilcox,1,wilcox,grp1=grepl("^A",colnames(df_wilcox)),grp2=grepl("^B",colnames(df_wilcox)))) ttest_equal_AB<-as.matrix(apply(df_ttest_equal,1,ttest_equal,grp1=grepl("^A",colnames(df_ttest_equal)),grp2=grepl("^B",colnames(df_ttest_equal)))) ttest_unequal_AB<-as.matrix(apply(df_ttest_unequal,1,ttest_unequal,grp1=grepl("^A",colnames(df_ttest_unequal)),grp2=grepl("^B",colnames(df_ttest_unequal)))) p_value<-rbind(wilcox_AB,ttest_equal_AB,ttest_unequal_AB) colnames(p_value)<-c("pvalue") df<-merge(df1,p_value,by="row.names") df Row.names A1 A2 A3 A4 B1 B2 B3 B4 ks_AB var_AB pvalue 1 N1 1 2 4 12 33 17 77 69 0.02857143 0.01700168 0.02857143 2 N2 34 20 59 21 90 20 43 44 0.69937420 0.45132827 0.39648631 3 N3 11 16 23 24 19 12 55 98 0.77142857 0.01224175 0.25822839 4 N4 29 111 335 34 61 88 110 320 0.77142857 0.76109048 0.85703939 5 N5 51 58 45 39 55 87 55 89 0.21055163 0.19561742 0.06610608 ,然后使用IntelliJ IDEA隧道配置到127.0.0.1:2222就像处理单个隧道一样。

firewall:22

您可以配置External Tool来自动执行此过程。在Windows计算机上,我在Bitvise SSH Client方面具有丰富的经验,可以创建隧道/端口转发并自动启动它们。

答案 1 :(得分:0)

curl -sS http://127.0.0.1/health || exit 1 开箱即用地支持您的方案。诀窍是在ssh文件中为管理服务器创建两个条目,一个为~/.ssh/config,另一个为your-user。然后使用special-user将您的连接链接在一起。

因此,首先为本地服务器上要连接的管理服务器和用户设置一个ProxyJump部分:

Host

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

Host

在同一主机上,添加一条指令来告诉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

您现在可以从本地计算机上 ProxyJump mgmt ssh mgmt-special-user将自动跳过ssh主机,还将自动通过mgmt延伸隧道并返回本地计算机。

mgmtProxyJump)已添加到OpenSSH 7.3(于2016年发布)中。