我可以通过 SSH 访问“公共”服务器,这也是公司网络的网关。网络中有另一台服务器,正在运行本地Oracle 数据库服务器(没有来自该服务器外部的访问,只接受 localhost DB 连接)。当然,我还有另一个 SSH 访问该服务器的权限。
有没有办法从网络外部加入这个 Oracle Database 11g 服务器?我在问是否有类似 ssh 隧道链的东西,以及我如何配置它。这可能很有用,例如,对于 TOAD for Oracle(ORACLE 客户端)。
编辑:这是图像
谢谢
我可以通过 SSH 访问“公共”服务器,这也是公司网络的网关。网络中有另一台服务器,正在运行本地Oracle 数据库服务器(没有来自该服务器外部的访问,只接受 localhost DB 连接)。当然,我还有另一个 SSH 访问该服务器的权限。
有没有办法从网络外部加入这个 Oracle Database 11g 服务器?我在问是否有类似 ssh 隧道链的东西,以及我如何配置它。这可能很有用,例如,对于 TOAD for Oracle(ORACLE 客户端)。
编辑:这是图像
谢谢
是的,这是可能的。例如在 Linux 上,运行
ssh -N -Llocalport:dbserver:dbport yourname@connectionserver
在哪里
使用 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)
)
)
谢谢!
我打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 访问权限!
您还可以添加-f
在后台运行 ssh 命令的选项。
我在评论中遇到了与@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