database - 通过 IntelliJ IDEA 中的两个 ssh 隧道连接到数据库
问题描述
我正在尝试在 IntelliJ IDEA Ultimate 中添加一个 postgresql 数据库作为数据源。
我已经通过一个 ssh 隧道处理过数据源。但是现在数据库服务器位于防火墙后面,只接受来自管理服务器的 ssh 连接。访问数据库服务器的唯一方法是通过管理服务器。
所以我(或 IntelliJ)必须通过 ssh 连接到该服务器,然后使用另一个用户通过 ssh 隧道连接到数据库服务器。
一切都清楚了吗?:-D
问题是,IntelliJ 只提供配置一个 ssh 隧道。但是在第一个隧道之后,我需要使用第二个,最终连接到数据库服务器......有什么想法吗?
提前谢谢。
解决方案
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 年发布)中添加。
推荐阅读
- python-3.x - 将 obspy.taup 与从 .txt 文件中获得的变量一起使用
- python - 为什么允许“set”时,PyCharm 认为“Set[str]”类型不兼容?
- asynchronous - 频道消费者在 Django 中阻止了正常的 HTTP?
- c# - 将迁移添加到我的类库 ef core
- wordpress - 如何在 woocommerce 结帐页面的订单审核部分中使用自定义字段更改产品标题
- javascript - 如何使用 react useState 钩子防止竞争条件
- visual-studio-2012 - 如何在 CMake 中为 Struct Member Alignment 设置 Visual C 构建选项?
- ios - Xcode 本地化:没有冗余的基本概念
- python - 如何请求将包添加到 Conda 主要渠道之一?
- python - 什么可以帮助初始化 GLX 以使 spyder 在服务器上启动?