私の問題のグーグルの結果のほとんどすべては、私の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
これは絶対に可能です。 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
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