web-dev-qa-db-fra.com

Comment puis-je me connecter au serveur Oracle Database 11g via la chaîne de tunnel ssh (double tunnel, serveur dans le réseau de l'entreprise)?

J'ai un accès SSH au serveur 'public', qui est également la passerelle vers le réseau de l'entreprise. Il existe un autre serveur sur le réseau, où le serveur local Oracle Database est en cours d'exécution (il n'y a pas d'accès depuis l'extérieur de ce serveur, seules les connexions à la base de données localhost sont acceptées). Et bien sûr, j'ai un autre accès SSH à ce serveur.

Existe-t-il un moyen de rejoindre ce serveur Oracle Database 11g depuis l’extérieur du réseau? Je demande s’il existe une chaîne du type tunnel ssh et comment je la configure. Cela peut être utile, par exemple, pour TOAD for Oracle (client Oracle).

EDIT: Voici l'image

alt textMerci

23
Michal Drozd

Oui c'est possible. Par exemple. sous Linux, lancez

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

  • localport est le port sur votre machine qui sera transféré (peut être 1521 si aucune instance locale d'Oracle n'est en cours d'exécution)
  • dbserver est le nom ou l'adresse IP du serveur de base de données
  • dbport est le port de la base de données (généralement 1521)
  • votrenom est la connexion sur le serveur de connexion
  • connectionserver est la machine sur laquelle vous avez un accès ssh

La même chose peut être faite sous Windows en utilisant Plink (fourni avec PuTTY):

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

Faites cela sur les deux machines (votre machine locale et le serveur auquel vous avez accès) pour chaîner les tunnels SSH. Exemple:

Serveur de connexion (sous Linux):

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

Votre PC:

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

L’entrée tnsnames.ora doit ressembler à une base de données locale, par exemple.

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

Merci! 

J'ai appelé ssh -N -LXXXX:server:YYYY login@server deux fois.

D'abord, j'ai appelé 

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

sur mon PC.

Ensuite, sur ce serveur (pendant la session SSH), j’ai appelé

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

où 192.168.105.111 est le serveur sur lequel Oracle était en cours d'exécution.

Donc, ce que j'ai fait est la redirection suivante: 

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

J'ai donc un accès Oracle sur mon PC local au port 9998!

5
Michal Drozd

vous pouvez également ajouter l'option -f qui exécute la commande ssh en arrière-plan. 

0
loudstil