针对我的问题,几乎所有的谷歌搜索结果都有不同的关于与我的 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