web-dev-qa-db-ger.com

Wie kann ich über die SSH-Tunnelkette (Doppeltunnel, Server im Firmennetzwerk) eine Verbindung zum Oracle Database 11g-Server herstellen?

Ich habe SSH-Zugriff auf einen "öffentlichen" Server, der auch das Gateway zum Firmennetzwerk ist. Es gibt einen anderen Server im Netzwerk, auf dem local Oracle Database Server ausgeführt wird (Es ist kein Zugriff von außerhalb dieses Servers möglich, nur lokale DB-DB-Verbindungen werden akzeptiert). Und natürlich habe ich noch einen SSH-Zugriff auf diesen Server.

Gibt es eine Möglichkeit, diesen Oracle Database 11g-Server von außerhalb des Netzwerks anzuschließen? Ich frage, ob es etwas wie ssh-Tunnel-Kette gibt und wie ich sie konfiguriere. Dies kann beispielsweise für TOAD for Oracle (Oracle-Client) nützlich sein.

EDIT: Hier ist das Bild

alt textVielen Dank

23
Michal Drozd

Ja es ist möglich. Z.B. unter Linux ausführen

ssh -N -Llocalport:dbserver:dbport [email protected]

woher

  • localport ist der Port auf Ihrem Computer, der weitergeleitet wird (kann 1521 sein, wenn keine lokale Instanz von Oracle ausgeführt wird)
  • dbserver ist der Name oder die IP des Datenbankservers
  • dbport ist der Port der Datenbank (normalerweise 1521)
  • ihr Name ist das Login auf dem Connectionserver
  • connectionserver ist der Computer, auf den Sie SSH-Zugriff haben

Das gleiche kann unter Windows mit Plink (das mit PuTTY geliefert wird) durchgeführt werden:

plink -N -L localport:dbserver:dbport [email protected]

Führen Sie dies auf beiden Computern (Ihrem lokalen Computer und dem Server, auf den Sie Zugriff haben) aus, um die SSH-Tunnel zu verketten. Beispiel:

Verbindungsserver (Linux vorausgesetzt):

ssh -N -L1521:dbserver:1521 [email protected]

Dein PC:

plink -N -L 1521:connectionserver:1521 [email protected]

Der Eintrag tnsnames.ora muss so aussehen, als würden Sie eine lokale Datenbank ausführen, z.

prodoverssh =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
    )
  )
32

Vielen Dank! 

Ich rief zweimal ssh -N -LXXXX:server:YYYY [email protected] an.

Zuerst habe ich angerufen 

ssh -L 9998:127.0.0.1:9997 [email protected]

auf meinem PC.

Dann habe ich auf diesem Server (während der SSH-Sitzung) angerufen

ssh -L 9997:localhost:1521 [email protected]

dabei ist 192.168.105.111 der Server, auf dem Oracle ausgeführt wurde.

Also habe ich folgende Umleitung gemacht: 

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

Also habe ich auf meinem lokalen PC an Port 9998 Oracle-Zugriff!

5
Michal Drozd

sie können auch die -f-Option hinzufügen, die den ssh-Befehl im Hintergrund ausführt. 

0
loudstil