Почти все результаты Google для моей проблемы имеют другой случай туннельного подключения к моему серверу oracle, у них обычно есть ssh-сервер / клиент на сервере oracle
но у меня есть другой случай со следующей иллюстрацией:
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 user@192.168.137.2 -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
тогда я пытаюсь:
[user@192.168.137.2]$ 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:
кто-нибудь может дать мне какое-либо решение, и как это отладить?
Дополнительная информация :
когда веб-сервер подключается к серверу oracle напрямую, все в порядке ..
я ничего не могу сделать на сервере оракула
Я пробую это на моем клиенте:
ssh -vvv -p 212 user@192.168.137.2 -R 1521:128.21.31.112:1521
получил :
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
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
Это абсолютно возможно. Если вы запускаете ssh-клиент со своего веб-сервера:
ssh -L 1521:128.21.31.112:1521 user@192.168.137.2 -N
Затем подключитесь к localhost: 1521, где localhost - это веб-сервер.
Если вы хотите, чтобы туннель привязался конкретно к 192.168.137.2, тогда
ssh -L 192.168.137.2:1521:128.21.31.112:1521 user@192.168.137.2 -N
Вы можете попробовать сделать трюк с iptables на 192.168.137.1/192.168.137.2
# iptables -t nat -I OUTPUT -p tcp --dport 1251 -j DNAT --to-destination 128.21.31.112:1521
После этого попробуйте что-нибудь вроде
# sqlplus64 user/passwd@localhost:1251/sid