SSH也可以這樣玩!!!!!!!!!!!!

本文可以幫你:
1.認識豬豬
2..***(是不是很誘惑你)
3.防火牆沒開3389,咋連IDC內網的windows呢?
4.開發人員的要用mysql客戶端連到mysql上去改數據,但是防火牆是封了3306端口的,咋整?
5.記住三個字母 S S H (如果你已對它十分熟悉請繞行)
 
豬豬:我這可不是在罵人之類的,不信可以點開他博客看看(http://liang831002.blog.51cto.com/)。他今天提了一個問題,真把我難住了。由此還引發了一堆問題。之所以稱之爲問題,只能怪小弟才疏學淺,沒能幫他解決問題還引出了一堆疑難雜症。。。
豬豬同學問的問題
我有web代理服務器的ip,平時通過這個代理瀏覽國外網站(即所謂的***)
現在我有個java+c的應用跑在linux上,這個應用要向國外的某些服務器(例如twitter,被gfw屏蔽了)推送一些信息,如何實現?
他知道我以前客戶是老外,服務器大部分在國外,所以在羣裏找到我。可惜俺客戶的服務器都是白名單裏面的,還從沒遇到***的問題呢~ 不過這個問題着實引起了我的興趣。
首先我在羣裏面求救:得到如下答:php curl 函數,支持設置代理服務器。由此我想到linux自帶有curl軟件的,應該可以加以利用.
其次我曾經利用國外的服務器做過SSH動態轉發來***(小朋友不要學),所以我想的是最好能有臺國外服務器提供ssh 賬號來做轉發,這樣就可以了。
我提供給他兩種解決方案(如有更好的方案請高手賜教,小弟不甚感激)
1.找一個有國外vps的傢伙要個ssh賬號,做ssh轉發這樣最簡單
2.linux裏面有curl好像可以通過代理向目標服務器post數據(前提是你必須先找到代理服務器)
3.秋香大哥提醒我可以用***(大哥博客 http://sery.blog.51cto.com)
 
以下我就開始跟他在糾結於ssh轉發的實現了.
一般來說,ssh是用來做linux遠程連接的,作爲linux 系統管理員,手邊常會用到putty,secureCRT等ssh連接工具.而它的功能遠不止這.之前寫了篇文章關於用它做文件傳輸的感興趣的可以看看http://yahoon.blog.51cto.com/13184/43418接下來講正題:
 
SSH TUNNEL
譯作ssh 隧道,在不同的地方名稱不一樣,例如ssh轉發,ssh端口映射,ssh代理服務,ssh***等.實現的功能籠統來說就是將本地的一個端口映射爲所要訪問的目標機器的某個端口,這個映射的過程通過一臺ssh 服務器與本地的ssh會話來實現,這個會話即爲ssh隧道.
關於"目標機器":
目標機器的目標端口必須是ssh server可以訪問到的
目標機器:可以是一臺特定的機器(包含ssh server自身),這習慣稱之爲端口映射,是本地端口與目標端口一對一的轉發;
            也可以是任意臺的機器,稱之爲動態轉發.
關於"ssh隧道":
因爲轉發過程是通過ssh會話傳輸的,所以操作期間ssh會話是不能關閉的.說白了就是ssh連上了不能斷.
 
 
以下是windows下常見的ssh tunnel設置(以secureCRT爲例).
關於linux的可以讀http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/,
1. 在secureCRT裏打開ssh 服務器的連接 (這裏比如是192.168.0.100)
2. 選擇菜單Options--session Options,點擊左側的Port Forwarding
clip_p_w_picpath002
點擊Add按鈕
3. Tunnel設置
3.1 一對一映射
例子一: http端口映射
clip_p_w_picpath004
這是一個典型的端口映射的設置
將本地的 127.0.0.1:77 映射爲目標 www.g.cn:80
實現的效果就是ie裏面訪問http://127.0.0.1:7777會出現www.g.cn
clip_p_w_picpath006
例子二
我們的目標服務器與ssh服務器是同一臺,希望訪問其mysql,但是它的防火牆封了3306,可以按如下配置
clip_p_w_picpath008
這樣在客戶端裏面設置連接本地的8888端口就訪問到服務器的3306了,以下是使用mysql-front時的截圖
clip_p_w_picpath010
例子三:
有臺windows 與ssh處於同一內網,但是idc的防火牆禁止了3389對外開放.一般來說我們都會選擇使用***撥號進去再遠程桌面. 用我們的ssh tunnel就省得撥號了.配置如下
假設windowsip爲10.0.1.100
clip_p_w_picpath012
打開遠程桌面連接本地的9999試試看能連上不?
3.2 一對多的動態轉發
這裏其實就是我們經常使用的web瀏覽器的代理功能,設置好代理服務器,就可以訪問任何目標網站了(前提是我們的代理必須能訪問到這些目標).而ssh動態轉發則可以將ssh server做成一個這樣的代理服務器.動態轉發實現的是socks協議.當我們的ssh server位於國外,那就可以用它來***咯
設置如下:
clip_p_w_picpath014
只需要將本地的127.0.0.1:8080設爲瀏覽器的socks代理即可.這個就不用演示了吧.
這樣你就可以實現將ssh server做代理的功能了.
注:
在3.1的例一里面,做的一個http的一對一端口轉發,注意這種情況下並不是所有域名都適用的.例如如下域名
Baidu.com
根據網頁的代碼的具體實現不同,所以效果也不同:有的網頁根本就打不開,有的是自動跳轉域名上去.(請熟悉的哥們給咱解釋解釋~)
具體問題具體分析咯,按照使用場合來選擇使用~
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章