1. 程式人生 > >SSH埠轉發實現代理伺服器

SSH埠轉發實現代理伺服器

埠轉發介紹

         SSH為建立在應用層和傳輸層基礎上的安全協議,常用埠為22。本文主要介紹其埠轉發功能。顧名思義,就是監聽指定埠,把監聽到的資訊通過ssh協議通道(22埠和ssh server)轉發到remote target host 指定埠。其中ssh server就是中轉伺服器(代理伺服器)。

埠轉發必備條件

中轉伺服器連通性:客戶端主機能ssh登陸到中間主機;中間主機與目標應用無防火牆限制。當然中轉伺服器可以是多臺(問題2就是兩臺中轉伺服器)。

埠轉發方式方法

1.方式

本地埠轉發:client能ssh到server時,可使用,屬於正向ssh。

遠端埠轉發:server能ssh到client時,可使用,屬於逆向ssh。

某些條件限制下就只能用一種埠轉發方式了。

2. 方法

assh命令列(linux主機或模擬器執行)

本地埠轉發:

                  ssh -L <local port>:<remote host>:<remote port><SSH hostname>

遠端埠轉發:

         ssh -R <local port>:<remote host>:<remote port><SSH hostname>

bSecureCRT工具埠轉發功能(主要介紹)

c:利用orion-ssh2-214.jar

java編碼模擬埠轉發和基於ssh協議的功能(後面介紹)

SecureCRT工具埠轉發功能例項一:本機訪問受防火牆限制的資料庫伺服器

1.       中轉伺服器:10.10.222.333

2.       目的主機:11.11.222.444

3.       實現本機登陸

步驟一:快速新建連線 > ssh10.10.222.333

SecureCRT>quick connect>

步驟二:埠轉發設定

1.標籤右鍵>session options>Port Forwarding(本地埠轉發)

2.新增埠轉發

點選add,新增一個本地埠轉發。設定引數後儲存。

步驟三:重新組裝資料庫連線串

真實連線串:(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = 11.11.222.444)(PORT=1542))(connect_data=(sid=test-db)))

埠轉發連線串:(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = 127.0.0.1)(PORT=1542))(connect_data=(sid=test-db)))

(DESCRIPTION =(ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT=1542))(connect_data=(sid=test-db)))

注:埠轉發連線串中不一定與真實連線串中埠相等。

步驟四:本機登陸test db

pl/sql客戶端,用步驟三埠轉發連線串,登陸成功。前提是SecureCRT connect要處於連線狀態(即步驟一要一直連線著)


利用orion-ssh2-214.jarjava編碼模擬埠轉發

Connection conn = new Connection("10.10.222.333");

//  建立連線

conn.connect();

//ssh登陸

boolean isAuthenticated = conn.authenticateWithPassword(username,password);

if (isAuthenticated == false)

thrownew IOException("Authentication failed.");

//localhost:12345 埠轉發到11.11.222.444:22埠

LocalPortForwarder lpfd = conn.createLocalPortForwarder(12345, "11.11.222.444", 22) ;