29

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

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

编辑:这是图像

替代文字 谢谢

4

4 回答 4

40

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

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

在哪里

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

使用 Plink(Putty 附带)可以在 Windows 上完成相同的操作:

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

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

连接服务器(假设 Linux):

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

你的电脑:

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)
    )
  )
于 2010-09-06T19:20:47.943 回答
5

谢谢!

我打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)

所以我在本地 PC 的 9998 端口获得了 ORACLE 访问权限!

于 2010-09-08T11:23:05.677 回答
0

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

于 2016-12-22T14:52:48.717 回答
0

我在评论中遇到了与@j_maly相同的问题,可以在“MY REMOTE PC”(linux)中使用一条隧道连接到“GATEWAY”:

ssh -L 1521:DATABASE_URL_OR_IP:1521 USER@GATEWAY

但经过ORA-12170: TNS:Connect timeout occurred一遍又一遍。我已经这样做了:

  • 在 GATEWAY 中,将某些东西与可以工作的 oracle 连接起来,在我的情况下,sqldeveloper(sqlplus 也应该可以工作)。让我们猜测 sqldeveloper 中的 oracle 工作 url 是database.company.ex

  • 在 GATEWAY 运行netstat -putan | grep 1521中,问题出在:
    我发现该连接具有其他数据库 ip 和域,而不是以前已知的和假定连接的 ( database.company.ex)。

  • 所以你应该把ip或url显示在netstat -putan | grep 1521“GATEWAY”的结果中

    ssh -L 1521:DATABASE_URL_OR_IP_SHOWED_IN_NETSTAT:1521 USER@GATEWAY

我不知道为什么会发生这种情况,但是我找到了几个 ip 连接到同一个数据库,并且我无法从其中一些连接,要解决问题,我们必须找到正确的 ip。

值得一提的是,您还可以更改本地端口(在本例中为 11000)并运行此命令而不输出(-fN)

ssh -fN -L 11000:DATABASE:1521 USER@GATEWAY
于 2020-08-13T17:40:44.377 回答