2010-09-06 82 views
22

我有SSH訪問'公共'服務器,這也是公司網絡的門戶。網絡中還有另一臺服務器,其中本地 Oracle數據庫服務器正在運行(沒有來自此服務器外部的訪問,只接受本地主機數據庫連接)。當然,我有另一個SSH訪問這臺服務器。如何通過ssh隧道鏈(雙隧道,公司網絡中的服務器)連接Oracle數據庫11g服務器?

有沒有辦法從網絡外部加入到Oracle數據庫11g服務器? 我在問是否有像ssh隧道鏈,以及如何配置它。 例如,對於Oracle TOAD(ORACLE客戶端),這可能非常有用。

編輯:這裏是圖像

alt text 感謝

回答

30

是的,這是可能的。例如。在Linux上運行

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

其中

  • 將localPort是將轉發你的機器上的端口(可以是1521,如果有運行Oracle的本地實例)
  • DBSERVER是名或數據庫服務器
  • dbport的IP是數據庫(通常是1521)的端口
  • 提供yourname是在connectionserver登錄
  • connectionserver就是你有ssh訪問

同樣可以在Windows上使用的Plink(隨膩子)來完成的機器:

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

執行此操作在兩臺機器上(本地計算機和你有權訪問的服務器)鏈接SSH隧道。例如:

連接服務器(假設Linux的):

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

你的PC:

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

中的tnsnames.ora條目必須看起來像你正在運行的本地數據庫,例如

prodoverssh = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = prod) 
    ) 
) 
+0

謝謝,我做了類似的事情 – 2010-09-08 11:59:40

+0

我面臨着非常類似的設置,但現在是「我的身邊」(在綠色圓圈)的網關。我也想通信到oracle服務器。但是,我不能使用你的推薦,因爲我不是在管理「ORACLE SERVER」,而只是在原始問題的網絡模式上的「GATEWAY」。我只能從「GATEWAY」的「ORACLE SERVER」計算機(在1521上收聽)與Oracle服務器進行通信,客戶端同時安裝在「GATEWAY」和「我的電腦」上。對我有一些解決方案嗎? – 2012-11-08 19:46:46

+1

j_maly:如果數據庫服務器接受來自網關的連接,則更容易。從PC上運行'plink -N -L 1521:dbserver:1521 gwuser @ gateway'。 – 2012-11-09 07:52:15

4

謝謝!我打電話ssh -N -LXXXX:server:YYYY [email protected]兩次。

首先,我叫

ssh -L 9998:127.0.0.1:9997 [email protected] 
我的電腦上

然後,該服務器(SSH會話期間),我叫

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

其中192.168.105.111就是ORACLE正在運行的服務器。

所以我所做的是以下重定向:

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

所以我就Oracle訪問在本地PC在端口9998!

0

您可以添加在後臺運行ssh命令的-f選項。