Как сделать 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

2 ответа

Это абсолютно возможно. Если вы запускаете 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
Другие вопросы по тегам