如何通过SSH隧道链(Double Tunnel,公司网络中的服务器)连接到Oracle数据库11G服务器?

StackOverflow https://stackoverflow.com/questions/3653788

我可以访问“公共”服务器,这也是通往公司网络的网关。网络中还有另一台服务器 当地的 Oracle数据库服务器正在运行(该服务器外部没有访问权限,仅接受Local -Host DB连接)。当然,我还有对该服务器的SSH访问权限。

是否有任何方法可以从网络外部加入该Oracle数据库11G服务器?我问是否有SSH隧道链之类的东西,以及如何配置它。例如,对于Oracle(Oracle Client)而言,这可能是有用的。

编辑: 这是图像

alt text谢谢

有帮助吗?

解决方案

是的,有可能。例如在Linux上,运行

ssh -N -Llocalport:dbserver:dbport yourname@connectionserver

在哪里

  • Localport是您将要转发的机器上的端口(如果没有Oracle运行的本地实例,则可以是1521)
  • DBSERVER是数据库服务器的名称或IP
  • DBPORT是数据库的端口(通常1521)
  • 您的名称是ConnecterServer上的登录名
  • ConnectionServer是您具有SSH访问的机器

使用PLINK(随附腻子)可以在Windows上完成同样的事情:

plink -N -L localport:dbserver:dbport yourname@connectionserver

在两台机器(您的本地机器和您可以访问的服务器)上进行此操作以链接SSH隧道。例子:

连接服务器(假设Linux):

ssh -N -L1521:dbserver:1521 dblogin@dbserver

您的PC:

plink -N -L 1521:connectionserver:1521 connlogin@connectionserver

tnsnames.ora条目看起来必须像您正在运行本地数据库一样

prodoverssh =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
    )
  )

其他提示

谢谢!

我打了电话 ssh -N -LXXXX:server:YYYY login@server 两次。

首先,我打电话给

ssh -L 9998:127.0.0.1:9997 login@gate.company.cz

在我的电脑上。

然后,在此服务器上(在SSH会话期间),我打电话给

ssh -L 9997:localhost:1521 root@192.168.105.111

其中192.168.105.111是Oracle正在运行的服务器。

所以我所做的是重定向:

1521 (COMPANY ORACLE SERVER) 
  -> 9997 (COMPANY GATEWAY SERVER)
     -> 9998 (LOCAL PC)

因此,我在端口9998的本地PC中获得了Oracle访问!

您也可以添加 -f 在后台运行SSH命令的选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top