首页 > 解决方案 > 通过 IntelliJ IDEA 中的两个 ssh 隧道连接到数据库

问题描述

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

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

一切都清楚了吗?:-D

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

提前谢谢。

在此处输入图像描述

标签: databaseintellij-ideasshdatasourcessh-tunnel

解决方案


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主机,并且还将自动扩展隧道mgmt并返回到您的本地计算机。

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


推荐阅读