如何通过ssh隧道链(双隧道,公司网络中的服务器)连接到Oracle Database 11g服务器?

Mic*_*ozd 25 oracle ssh database-connection ssh-tunnel

我有SSH访问'公共'服务器,这也是公司网络的门户.网络中有另一台服务器,其中运行本地 Oracle数据库服务器(此服务器外部无法访问,只接受本地主机数据库连接).当然,我有另一个SSH访问此服务器.

有没有办法从网络外部加入这个Oracle Database 11g服务器?我问是否有类似ssh隧道链,以及我如何配置它.例如,这对于TOAD for Oracle(ORACLE客户端)非常有用.

编辑:这是图像

替代文字 谢谢

Eri*_*ler 37

是的,这是可能的.例如在Linux上运行

ssh -N -Llocalport:dbserver:dbport yourname@connectionserver
Run Code Online (Sandbox Code Playgroud)

哪里

  • localport是您的计算机上将被转发的端口(如果没有运行oracle的本地实例,则可以是1521)
  • dbserver是数据库服务器的名称或IP
  • dbport是数据库的端口(通常是1521)
  • yourname是connectionserver上的登录名
  • connectionserver是您具有ssh访问权限的计算机

使用Plink(随附Putty)在Windows上也可以这样做:

plink -N -L localport:dbserver:dbport yourname@connectionserver
Run Code Online (Sandbox Code Playgroud)

在两台计算机(您的本地计算机和您有权访问的服务器)上执行此操作以链接ssh隧道.例:

连接服务器(假设Linux):

ssh -N -L1521:dbserver:1521 dblogin@dbserver
Run Code Online (Sandbox Code Playgroud)

你的电脑:

plink -N -L 1521:connectionserver:1521 connlogin@connectionserver
Run Code Online (Sandbox Code Playgroud)

tnsnames.ora条目必须看起来像是在运行本地数据库,例如

prodoverssh =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
    )
  )
Run Code Online (Sandbox Code Playgroud)


Mic*_*ozd 5

谢谢!

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

首先,我打电话给

ssh -L 9998:127.0.0.1:9997 login@gate.company.cz
Run Code Online (Sandbox Code Playgroud)

在我的电脑上.

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

ssh -L 9997:localhost:1521 root@192.168.105.111
Run Code Online (Sandbox Code Playgroud)

其中192.168.105.111是运行ORACLE的服务器.

所以我做的是重定向:

1521 (COMPANY ORACLE SERVER) 
  -> 9997 (COMPANY GATEWAY SERVER)
     -> 9998 (LOCAL PC)
Run Code Online (Sandbox Code Playgroud)

所以我在本地PC上通过9998端口访问了ORACLE!