如何设置 ssh 隧道以从白名单 IP 获取服务器数据并输入到本地构建中?

如何设置 ssh 隧道以从白名单 IP 获取服务器数据并输入到本地构建中?

这个问题可能已经得到解答了,但我的新手身份阻止我理解答案......

我正在远程工作。我有一个在 127.0.0.1:8080 上运行的本地构建。此构建需要从远程数据库获取数据。远程数据库仅允许某些 IP 连接。我有另一台列入白名单的服务器。因此,我需要设置一条通往列入白名单的服务器的隧道来获取数据库数据,并将该数据发送回我的本地构建。

我可以设置一个隧道,这样我的所有网络流量都会通过白名单服务器,但这样我就无法再访问我的本地构建。或者我可以运行我的本地构建,但我无法使用它,因为它认为服务器已断开连接。

我对终端很满意,但我只是不确定如何设置它,以便我只能得到服务器信息(并将其连接到我的本地构建)而不是所有网络流量。

答案1

我可以帮助您将本地构建(服务器软件应用程序?)连接到本地端口,这是通向数据库服务器的隧道。

当您的服务器软件应用程序连接到数据库服务器时,您应该能够通过端口 8080 上的浏览​​器连接到您的本地构建,该数据库服务器可以通过白名单服务器通过 ssh 隧道访问。

如果这是您想要的,我可以为您提供以下帮助......

我假设您可以通过 ssh 从本地构建连接到白名单服务器,并且可以在本地构建中配置数据库连接。

  1. 连接到白名单服务器
  2. 配置从白名单服务器到数据库服务器的隧道
  3. 配置本地构建以连接到“localhost”

步骤 1.+ 2.可以通过一个 cli 命令完成:

ssh -L <any-number-gt-1024>:<database-server-ip>:<database-server-port> <your-username>@<whitelisted-server>

例子:

对于接受 IP 为 192.168.1.20 的端口 5432 上的连接的 PostgreSQL 数据库服务器和 IP 为 192.168.1.30 的白名单服务器,您可以像这样配置隧道:

ssh -L 1155:192.168.1.20:5432 [email protected]

如果建立了此 ssh 连接,您将通过白名单服务器从 localbuild(初始化 ssh 连接的地方)获得到数据库服务器的隧道。您可以通过连接到“localhost:1155”与数据库通信

telnet localhost 1155

现在您可以配置您的 localbuild 以连接到 localhost 端口 1155 来连接到数据库服务器。

解释

您可以通过以下方式连接到白名单服务器

ssh [email protected]

要配置可在本地主机上访问的隧道(即 -L 参数)并通过白名单服务器连接到数据库服务器,您需要在 ssh 连接的参数中输入名称/ip 和可从白名单服务器访问数据库服务器的端口。这也适用于 DNS 名称或 /etc/hosts 条目。

-L 1155:<DB-Server>:<DB-Port>

PostgreSQL 默认监听端口 5432。MySQL :3306 ...

步骤3:

配置您的服务器软件应用程序以连接到 localhost:1155(或您选择的任何端口)并使用白名单服务器中的 db-login-account。

笔记

  • 您应该使用本地主机上未使用的端口。但是,如果该端口已被使用,ssh 会向您发出警告。
  • 注意您发送到数据库的 sql 命令(例如 DROP 和 TRUNCATE)。您不是将这些命令发送到本地主机数据库,而是发送到通过 ssh 隧道到达的数据库服务器!如果隧道已启动并正在运行,这不是您的本地构建数据库。
  • 此隧道设置也适用于所有其他可访问端口。适用于仅本地主机监听的 Tomcat-Admin-Manager-App 等。

相关内容