SSH端口轉發

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定。SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息洩露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運行SSH。

SSH端口轉發技術

在ssh加密的通道上傳輸其他協議數據,即其它協議的數據通過SSH端口進行轉發,SSH連接作為其它協議傳輸通道(隧道),這種方式也叫做SSH端口轉發或SSH隧道。

一、SSH端口轉發技術的作用

1、加密數據傳輸

2、突破防火牆限制

二、SSH端口轉發的分類

1、本地轉發(local forwarding)

本地轉發中的本地是指將本地的某個端口轉發到其它主機的某個端口,這樣當我們的程序連接本地的這個端口時,其實間接連上了其它主機的某個端口,當我們發數據包到這個端口時數據包就自動轉發到了那個遠程的端口上。命令如下:

<code>$ ssh -L [bind_address:]port:host:hostport server_address/<code>

—>bind_address:本機IP,默認或者不寫為127.0.0.1

—>port:本地開啟端口,自己指定。(建議用大的端口,防止衝突)

—>host:遠程主機。

—>hostport:遠程主機,某個資源端口

例如執行:<code>$ ssh -Nf -L 192.168.244.129:12300:192.168.244.130:80 192.168.244.130/<code>

回車後輸入遠程主機的密碼即開啟。

通過執行命令:<code>$ netstat -np/<code> 查看是否存在建立通道。

使用<code>$ netstat -nptl | grep 12230 /<code>查詢12230端口是否被監聽

如果成功,則可以在本地直接訪問192.168.244.129:12300其實就是訪問服務器的80端口應用,具體端口以實際為主。下面是訪問的原理圖解。

SSH端口轉發

2、遠程轉發(remote forwarding)

與本地端口轉發相對應的是遠程端口轉發,與本地轉發不同,它指定的是遠程主機的一個端口,將指向該端口的連接轉發到本地端口,可遠程轉發本質是一樣的,主要區別在於需要轉發的端口是在遠程主機上還是本地主機上。命令如下:

<code>$ ssh -R [bind_address:]port:host:hostport server_address/<code>

—>bind_address:遠程主機IP

—>port:遠程主機開放的端口,自己指定。(建議用大的端口,防止衝突)

—>host:要訪問的主機。

—>hostport:要訪問的主機某個資源端口

遠程端口轉發可以實現外網訪問內網資源,內網通過SNAT可以訪問外網,外網無法直接訪問內網,內網主機通過SSH遠程轉發實現外網主機訪問內網資源

例如執行:<code>$ ssh -Nf -R 60.205.231.58:12300:192.168.244.130:80 60.205.231.58/<code>

通過執行命令:<code>$ netstat -np/<code> 查看是否存在建立通道。

使用<code>$ netstat -nptl | grep 12230 /<code>查詢12230端口是否被監聽

如果成功,則可以在本地直接訪問60.205.231.58:12300其實就是訪問內網服務器的80端口應用,具體端口以實際為主。下面是訪問的原理圖解。

SSH端口轉發

3、動態轉發(dynamic forwarding)

防火牆允許內網主機A訪問外網,禁止主機B訪問外網在內網主機B上通過SSH動態轉發實現通關主機A問外網

<code>$ ssh -Nf -D 192.168.244.129:12300 192.168.244.130/<code>

SSH端口轉發

原文地址:http://blog.leepeng.com.cn/?p=339


分享到:


相關文章: