Как я могу подключиться к серверу Oracle Database 11g через цепочку туннелей ssh ​​(двойной туннель, сервер в сети компании)? - PullRequest
23 голосов
/ 06 сентября 2010

У меня есть доступ SSH к «общедоступному» серверу, который также является шлюзом для корпоративной сети. В сети есть еще один сервер, на котором работает локальный сервер базы данных Oracle (нет доступа извне этого сервера, принимаются только локальные соединения с БД) И, конечно, у меня есть еще один SSH-доступ к этому серверу.

Есть ли способ присоединиться к этому серверу Oracle Database 11g из-за пределов сети? Я спрашиваю, есть ли что-то вроде цепочки туннелей SSH, и как я настраиваю это. Это может быть полезно, например, для TOAD for Oracle (клиент ORACLE).

РЕДАКТИРОВАТЬ: Вот изображение

alt text Спасибо

Ответы [ 3 ]

32 голосов
/ 06 сентября 2010

Да, это возможно. Например. в Linux запустите

ssh -N -Llocalport:dbserver:dbport yourname@connectionserver

, где

  • localport - это порт на вашей машине, который будет перенаправлен (может быть 1521, если локальный экземпляр oracle не запущен)
  • dbserver - это имя или IP-адрес сервера базы данных
  • dbport - порт базы данных (обычно 1521)
  • ваше имя - логин на сервере соединений
  • сервер соединений - это машина, к которой у вас есть доступ по ssh

То же самое можно сделать в Windows, используя Plink (поставляется с Putty):

plink -N -L localport:dbserver:dbport yourname@connectionserver

Сделайте это на обеих машинах (на вашем локальном компьютере и на сервере, к которому у вас есть доступ), чтобы связать туннели ssh. Пример: * +1021 *

Сервер соединений (при условии Linux):

ssh -N -L1521:dbserver:1521 dblogin@dbserver

Ваш ПК:

plink -N -L 1521:connectionserver:1521 connlogin@connectionserver

Запись tnsnames.ora должна выглядеть так, как будто вы используете локальную базу данных, например,

prodoverssh =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
    )
  )
5 голосов
/ 08 сентября 2010

Спасибо!

Я дважды звонил ssh -N -LXXXX:server:YYYY login@server.

Сначала я позвонил

ssh -L 9998:127.0.0.1:9997 login@gate.company.cz

на моем ПК.

Затем на этом сервере (во время сеанса SSH) я позвонил

ssh -L 9997:localhost:1521 root@192.168.105.111

, где 192.168.105.111 - сервер, на котором работал ORACLE.

Итак, я сделал следующее перенаправление:

1521 (COMPANY ORACLE SERVER) 
  -> 9997 (COMPANY GATEWAY SERVER)
     -> 9998 (LOCAL PC)

Итак, у меня есть доступ ORACLE на локальном ПК через порт 9998!

0 голосов
/ 22 декабря 2016

Вы также можете добавить опцию -f, которая запускает команду ssh в фоновом режиме.

...