SSH埠轉發實現代理伺服器
埠轉發介紹
SSH為建立在應用層和傳輸層基礎上的安全協議,常用埠為22。本文主要介紹其埠轉發功能。顧名思義,就是監聽指定埠,把監聽到的資訊通過ssh協議通道(22埠和ssh server)轉發到remote target host 指定埠。其中ssh server就是中轉伺服器(代理伺服器)。
埠轉發必備條件
中轉伺服器連通性:客戶端主機能ssh登陸到中間主機;中間主機與目標應用無防火牆限制。當然中轉伺服器可以是多臺(問題2就是兩臺中轉伺服器)。
埠轉發方式方法
1.方式
本地埠轉發:client能ssh到server時,可使用,屬於正向ssh。
遠端埠轉發:server能ssh到client時,可使用,屬於逆向ssh。
某些條件限制下就只能用一種埠轉發方式了。
2. 方法
a:ssh命令列(linux主機或模擬器執行)
本地埠轉發:
ssh -L <local port>:<remote host>:<remote port><SSH hostname>
遠端埠轉發:
ssh -R <local port>:<remote host>:<remote port><SSH hostname>
b:SecureCRT工具埠轉發功能(主要介紹)
c:利用orion-ssh2-214.jar
SecureCRT工具埠轉發功能例項一:本機訪問受防火牆限制的資料庫伺服器
1. 中轉伺服器:10.10.222.333
2. 目的主機:11.11.222.444
3. 實現本機登陸
步驟一:快速新建連線 > ssh到10.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.jar包java編碼模擬埠轉發
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) ;