Назад | Перейти на главную страницу

как сделать ssh-туннель на сервер Oracle без ssh-сервера внутри?

Почти все результаты 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