如何设置ssh隧道以从列入白名单的IP中获取服务器数据以馈入本地版本?


2

这可能已经得到了回答,而我的担心使我无法理解答案...

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

我可以设置一个隧道,以便所有网络流量都通过列入白名单的服务器,但是之后我将无法再访问本地版本。或者,我可以运行我的本地版本,但不能使用它,因为它认为服务器已断开连接。

我对Terminal感到很满意,只是不确定如何设置它,因此我只获取服务器信息(并将其连接到我的本地版本),而不是所有网络流量。

Answers:


0

我可以帮助您将本地版本(Server-Software-Application?)连接到本地端口,这是通向数据库服务器的通道。

当服务器软件应用程序连接到数据库服务器时,您应该能够通过端口8080上的浏览器连接到localbuild,这可以通过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 heino@192.168.1.30

如果建立了此ssh连接,则可以通过白名单服务器从本地构建(从ssh连接初始化的地方)到数据库服务器的隧道。您可以通过连接到“ localhost:1155”来与数据库对话

telnet localhost 1155

现在,您可以将localbuild配置为在端口1155上连接到localhost,以连接到数据库服务器。

解释

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

ssh heino@192.168.1.30

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

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

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

第三步:

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

笔记

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

谢谢,海野 我没有机会尝试一两天,但仔细阅读,无论如何从逻辑上讲都是合理的。我们会看到我遇到的麻烦。
托马斯

抱歉,花了很长时间才接受您的回答。我创建该帐户只是为了问这个问题,直到我尝试尝试该帐户时,我一辈子都无法弄清楚如何重新登录。跨多个*交换站点的这种多帐户功能实在是太疯狂了。
托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.