如何在没有 ssh 服务器的情况下通过 ssh 隧道连接到 oracle 服务器?

如何在没有 ssh 服务器的情况下通过 ssh 隧道连接到 oracle 服务器?

针对我的问题,几乎所有的谷歌搜索结果都有不同的关于与我的 Oracle 服务器建立隧道连接的情况,它们通常在 Oracle 服务器内有 ssh 服务器/客户端

但我还有另一个案例,如下图所示:

Web Server(port80) and SSH Server(port 212) and Oracle client with sqlplus (192.168.137.2)
||
||
SSH client (192.168.137.1/128.21.31.111) -> i do ssh tunneling here
||
||
Oracle Server (port 1521) (128.21.31.112)

我的 php 程序应该可以访问 oracle 服务器,并且我在 ssh 客户端中执行此操作:

ssh -p 212 [email protected] -R 1521:128.21.31.112:1521

据我所知,这种隧道应该可以做到:

every connection => (in)192.168.137.2:1521 on ssh server => (out) 128.21.31.112:1521 on ssh client

然后我尝试:

[[email protected]]$ sqlplus64 user/passwd@//192.168.137.2:1521/sid

但不幸的是我得到了:

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 24 09:30:17 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-12541: TNS:no listener


Enter user-name:

有人可以给我解决方案吗?以及如何调试它?

附加信息:
当 Web 服务器直接连接到 Oracle 服务器时,一切都很好。
我无法在 Oracle 服务器上执行任何操作

我在 myssh 客户端上尝试了这个:

ssh -vvv -p 212 [email protected] -R 1521:128.21.31.112:1521

得到 :

debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: remote forward success for: listen 1521, connect 128.21.31.112:1521
debug1: All remote forwarding requests processed
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Last login: Thu Jul 25 07:04:56 201

答案1

这绝对是可能的。如果您从 Web 服务器运行 ssh 客户端:

ssh -L 1521:128.21.31.112:1521 [email protected] -N

然后连接 localhost:1521,其中 localhost 是 Web 服务器。

如果您希望隧道专门绑定到 192.168.137.2,那么

ssh -L 192.168.137.2:1521:128.21.31.112:1521 [email protected] -N

答案2

您可以尝试在 192.168.137.1/192.168.137.2 上使用 iptables

# iptables -t nat -I OUTPUT -p tcp --dport 1251 -j DNAT --to-destination 128.21.31.112:1521

之后尝试类似

# sqlplus64 user/passwd@localhost:1251/sid

相关内容