web-dev-qa-db-ja.com

内部にsshサーバーがない状態でOracleサーバーにsshトンネリングを行う方法は?

私の問題のグーグルの結果のほとんどすべては、私の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
kreamik

これは絶対に可能です。 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
1
GeoSword

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
0
ALex_hha