上班族ssh tunnel求生手冊

http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=90121

 

常常阿,在上班,但是想打個BBS,上個plurk,開個msn聊聊天。但是卻擔心網管監控你的一舉一動。於是可以透過ssh tunnel來把自己的連線加密,這樣就不會被看光光啦。

範例1:
在公司,透過外面的電腦當proxy,連到外面。

ssh -NfD 8888 remote_ip
-N : 不執行任何命令
-f : 在背景執行
-D : 建socks5 的proxy

這時候,瀏覽器和msn在socks 5 proxy設定的欄位填上localhost:8888 。
連出去的連驗就是加密,並且是穿過remot_ip的連線。

範例2:
在公司,透過外面的電腦連BBS。

ssh -NfL 2323:bbs.gamer.com.tw:23 remote_ip
-L : 將local port 轉向

telnet localhost 2323 就可以連到巴哈,而且是加密的。
也可用PCManx連localhost 2323也是一樣的意思。

範例3:
有時候假日,想要連回公司加個班。
但是公司是NAT,所以沒辦法這樣作。
可以運用TCP雙向傳輸的特性來辦到這件事。

ssh -NfR 2222:localhost:22 remote_ip
-R : 將remote port轉向

這時候,只要跑到remote_ip的機器上面
ssh localhost -p 2222
就會跑到在NAT後面,公司的機器。
簡單說就是開後門啦!

 

 

socks 5 proxy真的很好用,建議多搭配proxychains,就算是利用pcmanx連bbs也可以透過proxy連線

安裝proxychains套件
利用ssh -D建立好 dynamic port forwarding
然後編輯好proxychains的設定檔 /etc/proxychains.conf
主要是加入 socks5 127.0.0.1 8888
接著Alt + F2 執行 " proxychains pcmanx "
接下來的bbs連線都是透過socks 5 proxy了
當然msn也可如法泡製。" proxychains amsn "

 

一般公司架構是這樣
PC(10.1.0.1) ---> (10.1.0.254)NAT translate(public_ip) ---> Internet(remote_ip)
但是外面要連進來就辦不到了,因為在NAT後方。
如果你可以控制NAT,你可以指定public_ip:2222 -> 10.1.0.1:22
但是如果你沒有這樣的權限,就沒辦法指定這件事。

ssh remote tunnel利用TCP雙向的特性,是在遠端開一個入口。

PC(10.1.0.1) <---> (10.1.0.254)NAT translate(public_ip) <---> Internet(remote_ip)

PC向remote_ip建一條TCP雙向開路的通道。
remote_ip把port 2222的要求,灌給這條通道。
PC收到之後,再把要求灌給自己的port 22。

因此反向的tunnnel就建立起來了

 

或許可以這樣說:

範例一的情境:
公司網路拒絕讓內部員工連線到某些網頁,比如說股票好了。但你知道外界有一個提供 SSH 服務的機器(remote_ip) 可以連到這個股票網站,而且公司網路並沒有阻擋你連線去 remote_ip!

這 時候就可以利用範例一提供的功能,要求 SSH 建立一個本地 SOCKS Proxy (localhost:8888) 和一個遠端的 SOCKS Proxy (remote_ip)。並將你的瀏覽器的所有要求,透過 localhost:8888 加密後,連線到 remote_ip 進行解密,再由 remote_ip 代為連線股票網站。回程的資訊也是加密後才傳送回來。

之所以要大費周章地建立兩個 SOCKS Proxy,是因為 SOCKS 協定並沒有加密功能,必須透過本地端和遠端的 SSH 來確保傳送的來回資料的安全。


範例二的情境是:
公司內部網路鎖住連往 bbs.gamer.com.tw:23 的連線,但你知道你可以連線到一台有提供 SSH 服務的機器上(remote_ip),而且它可以連線到巴哈!

所 以你就要求本地端和遠端的 SSH,將所有連往 localhost:2323 的連線,透過 SSH 加密後,全部導往 remote_ip,由 remote_ip 解開 SSH 密文後,代你連線巴哈,並將巴哈傳回來的資訊將密後傳回給你。(雖然 localhost 到 remote_ip 之間的資料有用 SSH 加密,但是由 remote_ip 連往巴哈的資料應是明文而非密文。畢竟 telnet 是看不懂 SSH 密文的。)


範例三的情況是:
公司內部網路處於 NAT 或防火牆之後,從你家(remote_ip)沒有辦法直接連線回來。

所 以你就先設定好家裡電腦的 SSH 服務,用範例三的方式,先在公司建立一個公司電腦(localhost:22)和 remote_ip 之間的 SSH 連線。並要求家裡電腦將所有連往其埠號 2222 的通訊全部轉往公司電腦的 SSH 埠號 22。等你回到家後,就可以用 SSH 連線家裡電腦的埠號 2222 來登入公司電腦的 SSH 服務了。



以上三種情況,設定上和使用上都應該要小心,免得變成跳板,或者資料遭竊聽。(最好不要聆聽所有網卡,聆聽 localhost 即可。而且 remote_ip 應該是自己非常信任的機器。)


範例一和範例二差別在於 SOCKS Proxy 的建立。這是因為 HTTP Proxy 會貼上/處理/取下額外的資訊,不能直接轉送(Forwarding)。範例二就真的是照本宣科地轉送。(當然,兩者轉送之前都有加密。)


以上,有錯請指正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值