web-dev-qa-db-ja.com

sshトンネルチェーン(二重トンネル、企業ネットワーク内のサーバー)を介してOracle Database 11gサーバーに接続するにはどうすればよいですか?

企業ネットワークへのゲートウェイでもある「パブリック」サーバーへのSSHアクセスがあります。ネットワーク内にlocal Oracle Databaseサーバーが実行されている別のサーバーがあります(このサーバーの外部からのアクセスはなく、localhost DB接続のみが受け入れられます)。そしてもちろん、このサーバーへの別のSSHアクセスがあります。

ネットワークの外部からこのOracle Database 11gサーバーに参加する方法はありますか? sshトンネルチェーンのようなものがあるかどうか、およびそれをどのように構成するかを尋ねています。これは、たとえば、TOAD for Oracle(Oracleクライアント)の場合に便利です。

編集:ここに画像があります

alt text ありがとう

25
Michal Drozd

はい、可能です。例えば。 Linuxでは、実行

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

どこ

  • localportは、転送されるマシン上のポートです(実行中のOracleのローカルインスタンスがない場合は1521になります)
  • dbserverは、データベースサーバーの名前またはIPです。
  • dbportはデータベースのポートです(通常は1521)
  • yournameは、connectionserverのログインです
  • connectionserverは、sshアクセスがあるマシンです

同じことがPlink(PuTTYに付属)を使用してWindowsで実行できます。

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

両方のマシン(ローカルマシンとアクセスできるサーバー)でこれを実行して、sshトンネルをチェーンします。例:

接続サーバー(Linuxを想定):

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

あなたのPC:

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)
    )
  )
36

ありがとう!

私は呼びました ssh -N -LXXXX:server:YYYY login@server 2回。

最初に、私は電話した

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

私のPCで。

次に、このサーバー(SSHセッション中)で、

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

ここで、192.168.105.111はOracleが実行されていたサーバーです。

だから私がやったのはリダイレクトに従うことです:

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

したがって、ローカルPCのポート9998でOracleにアクセスできました。

5
Michal Drozd

バックグラウンドでsshコマンドを実行する-fオプションも追加できます。

0
loudstil