Ⅰ linux如何做埠轉發
1、SSH 埠轉發
SSH 提供了一個非常有意思的功能,就是埠轉發,它能夠將其他 TCP 埠的網路數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。
2、iptables 埠轉發
CentOS 7.0 以下使用的是iptables,可以通過iptables實現數據包的轉發。
3、firewall 埠轉發
CentOS 7.0以上使用的是firewall,通過命令行配置實現埠轉發。
4、rinetd 埠轉發
rinetd是一個輕量級TCP轉發工具,簡單配置就可以實現埠映射/轉發/重定向。
Ⅱ SSH埠轉發實現內網穿透
「世界上最遙遠的距離就是你在外網請求,我在內網測試。」
這句話的內容,對於開發人員來說,特別容易理解。很多情況下,我們的開發及測試環境在單位的內網下,只能通過位於內網的機器來連接操作,位於外網的機器是連不到內網環境的。比如說,如果我們周末在家工作,而家裡的機器又不在單位內網環境下,那該如何連接內網的環境呢?難不成我們還要大周末的跑到單位去加班嗎?
答案是否定的。這是種普遍又迫切的需求,叫 「內網穿透」 。這里我們使用 SSH埠轉發 的技術,解決這種問題。
假設,host1和host2位於內網,host3位於外網,host3可以連接host1和host2,但host1不能連接host3和host2。我們要做的是,通過位於外網的host3,讓host1來連接host2。
首先,在host1上進行如下操作:
其中,-L參數指定了 「本地主機埠:目標主機:目標主機埠」 。這表示,讓host1作為 sshd服務端 ,監聽它自己的2222埠,然後將所有數據經由host3,轉發到host2的22埠。
這種情況下,host1不能連接host3,但由於host1的配置,使得從host1到host3建立了一條 「SSH隧道」 。
然後,在host1上進行如下操作:
其中,-p參數指定了ssh連接的埠,默認為22,這里指定了2222埠。這表示,讓host1作為 ssh客戶端 ,連接它自己的2222埠,相當於連接host2的22埠。
一般情況下,host2與host3為一台主機,換句話說,我們只要實現連接host3,那麼再連接host2也不成問題。
這時,命令分別轉換為:
本質上,SSH本地埠轉發,主要是實現以下兩個方面:
假設,host1和host2位於內網,host3位於外網,host1可以連接host3和host2,但host3不能連接host1和host2。我們要做的是,通過位於內網的host1,讓host3來連接host2,也就是實現所謂的 「內網穿透」 。
首先,在host1上進行如下操作:
其中,-R參數指定了 「遠程主機埠:目標主機:目標主機埠」 。這表示,讓host3作為 sshd服務端 ,監聽它自己的2222埠,然後將所有數據經由host1,轉發到host2的22埠。
這種情況下,host3不能連接host1,但由於host1的配置,使得從host1到host3建立了一條 「SSH反向隧道」 。
然後,在host3上進行如下操作:
其中,-p參數指定了ssh連接的埠,默認為22,這里指定了2222埠。這表示,讓host3作為 ssh客戶端 ,連接它自己的2222埠,相當於連接host2的22埠。
一般情況下,host2與host1為一台主機,換句話說,我們只要實現連接host1,那麼再連接host2也不成問題。
這時,命令分別轉換為:
本質上,SSH遠程埠轉發,主要是實現以下兩個方面:
內網穿透 ,簡單來說就是,利用位於外網的主機,來連接位於內網的主機,這符合 SSH遠程埠轉發 的情況。但由於實際情況中,SSH連接經常由於這樣那樣的問題,導致連接斷開,因此我們不得不重新去在內網主機上建立與外網主機的連接,也就是維持這條「SSH反向隧道」,autossh能實現連接斷開之後 自動重連 功能。
autossh與ssh用法類似,只要將ssh命令替換成autossh命令即可,如下所示:
其中,-M參數指定了 autossh監聽的埠 ,注意這里與其轉發的埠要區分開。
另外,-N表示禁止執行遠程命令,-T表示禁止分配偽終端,這兩個參數結合起來表示SSH連接不允許用戶交互執行遠程操作,只能用來傳數據,從而保證了遠程主機的安全。
每次重新建立連接,autossh都需要確認一下登錄身份。要保證 自動重連 ,前提就是要實現 自動登錄 。
一種常見的做法,就是使用 公鑰登錄 進行免密登錄,將host1上的公鑰傳送至host3上。這樣,每次在進行SSH登錄的時候,host3都會向host1發送一段隨機字元串,host1用自己的私鑰加密後將數據返回,然後host3用事先存好的公鑰對返回的數據進行解密,如果成功,則證明host1的身份可信,允許直接登錄,不再要求密碼。
還有一種做法,就是利用 sshpass 將密碼明文傳輸給autossh,如下所示:
其中,-p參數指定了登錄的密碼。除了命令行輸入密碼的形式,sshpass還包含-f、-e等參數,分別支持文件輸入密碼及系統環境變數輸入密碼等形式,如圖所示。
實現內網穿透,除了轉發 22埠 外,我們也可以轉發其他應用的埠,如web服務的 80埠 、mysql的 3306埠 等,這里就不一一細說了。
Ⅲ SSH高級功能 - 遠程埠轉發
在本地埠的場景中,可以從Server-B建立到Server-A的SSH連接,但是如果Server-B到Server-A之間無法連接,只有Server-A到Server-B的連接呢? (比如開發機可以訪問伺服器,但是伺服器一般是不可以訪問本地開發機的)
假設Server-A的IP為 192.168.58.101 ,Server-B的IP是 192.168.58.103
在Server-A上執行如下命令:
上面的命令,就建立了遠程埠轉發,把遠程伺服器Server-B的9906埠的所有數據都會被轉發到Server-A 192.168.58.101 的3306埠
在Server-B上執行命令
就可以連接到Server-A上的MySQL Server了
本地埠轉發 與 遠程埠轉發 結合起來使用,可以進行鏈式轉發。假設A主機在公司,B主機在家,C主機為遠程雲主機。A主機上運行了前文的Node.js服務,需要在B主機上訪問該服務。由於A和B不在同一個網路,且A主機沒有獨立公共IP地址,所以無法直接訪問服務。
通過本地埠轉發,將發送到B主機4000埠的請求,轉發到遠程雲主機C的3000埠。
通過遠程埠轉發,將發送到遠程雲主機C埠3000的請求,轉發到A主機的2000埠。
這樣,在主機B可以通過訪問 http://localhost:4000 來訪問主機A上的服務。
Ⅳ 中興e500電信版路由器埠轉發埠轉發設置
摘要 打開埠轉發或應用程序及游戲選項卡。每個路由器會稍有不同,但都需要找一下這兩個選項。如果你沒有看到他們,試試「高級設置」,看有沒有「埠轉發」。
Ⅳ SSH遠程操作與埠轉發的原理
SSH不僅可以用於遠程主機登錄,還可以直接在遠程主機上執行操作。
上一節的操作,就是一個例子:
單引號中間的部分,表示在遠程主機上執行的操作;後面的輸入重定向,表示數據通過SSH傳向遠程主機。
這就是說,SSH可以在用戶和遠程主機之間,建立命令和數據的傳輸通道,因此很多事情都可以通過SSH來完成。
下面看幾個例子。
【例1】
將 HOME/src/目錄。
【例2】
將遠程主機$HOME/src/目錄下面的所有文件,復制到用戶的當前目錄。
【例3】
查看遠程主機是否運行進程httpd。
既然SSH可以傳送數據,那麼我們可以讓那些不加密的網路連接,全部改走SSH連接,從而提高安全性。
假定我們要讓8080埠的數據,都通過SSH傳向遠程主機,命令就這樣寫:
SSH會建立一個socket,去監聽本地的8080埠。一旦有數據傳向那個埠,就自動把它轉移到SSH連接上面,發往遠程主機。可以想像,如果8080埠原來是一個不加密埠,現在將變成一個加密埠。
有時,綁定本地埠還不夠,還必須指定數據傳送的目標主機,從而形成點對點的"埠轉發"。為了區別後文的"遠程埠轉發",我們把這種情況稱為"本地埠轉發"(Local forwarding)。
假定host1是本地主機,host2是遠程主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。
我們在host1執行下面的命令:
命令中的L參數一共接受三個值,分別是"本地埠:目標主機:目標主機埠",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地埠2121,然後指定host3將所有的數據,轉發到目標主機host2的21埠(假定host2運行FTP,默認埠為21)。
這樣一來,我們只要連接host1的2121埠,就等於連上了host2的21埠。
"本地埠轉發"使得host1和host3之間彷彿形成一個數據傳輸的秘密隧道,因此又被稱為"SSH隧道"。
下面是一個比較有趣的例子。
它表示將本機的5900埠綁定host3的5900埠(這里的localhost指的是host3,因為目標主機是相對host3而言的)。
另一個例子是通過host3的埠轉發,ssh登錄host2。
這時,只要ssh登錄本機的9001埠,就相當於登錄host2了。
上面的-p參數表示指定登錄埠。
既然"本地埠轉發"是指綁定本地埠的轉發,那麼"遠程埠轉發"(remote forwarding)當然是指綁定遠程埠的轉發。還是接著看上面那個例子,host1與host2之間無法連通,必須藉助host3轉發。但是,特殊情況出現了,host3是一台內網機器,它可以連接外網的host1,但是反過來就不行,外網的host1連不上內網的host3。這時,"本地埠轉發"就不能用了,怎麼辦?
解決辦法是,既然host3可以連host1,那麼就從host3上建立與host1的SSH連接,然後在host1上使用這條連接就可以了。
我們在host3執行下面的命令:
R參數也是接受三個值,分別是"遠程主機埠:目標主機:目標主機埠"。這條命令的意思,就是讓host1監聽它自己的2121埠,然後將所有數據經由host3,轉發到host2的21埠。由於對於host3來說,host1是遠程主機,所以這種情況就被稱為"遠程埠綁定"。
綁定之後,我們在host1就可以連接host2了:
這里必須指出,"遠程埠轉發"的前提條件是,host1和host3兩台主機都有sshD和ssh客戶端。
SSH還有一些別的參數,也值得介紹。
N參數,表示只連接遠程主機,不打開遠程shell;T參數,表示不為這個連接分配TTY。這個兩個參數可以放在一起用,代表這個SSH連接只用來傳數據,不執行遠程操作。
f參數,表示SSH連接成功後,轉入後台運行。這樣一來,你就可以在不中斷SSH連接的情況下,在本地shell中執行其他操作。
要關閉這個後台連接,就只有用kill命令去殺掉進程。
Ⅵ 埠轉發怎麼加密
埠轉發加密步驟:
一,伺服器主機上開啟vncserver;
二,客戶端上運行命令,把伺服器埠數據轉到客戶端本地埠【1234】上,可以看出,本地埠【1234】已經處於監聽狀態;
三,客戶端上執行命令,進行VNC連接;
四,把VNC連接數據抓包,可以看出走的是SSH協議,數據為加密狀態。
Ⅶ 常用的adb命令
android Debug Bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互,被稱為Android 調試橋。
它是一種客戶端-伺服器程序,包括以下三個組件:
adb shell 命令
adb shell 則是調用的 Android 系統中的命令,這些 Android 特有的命令都放在了 Android 設備的 system/bin 目錄下
monkey命令
當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 伺服器進程正在運行。如果沒有,它會啟動伺服器進程。伺服器在啟動後會與本地 TCP 埠 5037 綁定,並監聽 adb 客戶端發出的命令 - 所有 adb 客戶端均通過埠 5037 與 adb 伺服器通信。
然後,伺服器會與所有正在運行的設備建立連接。它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數號埠查找模擬器。伺服器一旦發現 adb 守護程序 (adbd),便會與相應的埠建立連接。請注意,每個模擬器都使用一對按順序排列的埠 - 用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠。例如:
模擬器 1,控制台:5554
模擬器 1,adb:5555
模擬器 2,控制台:5556
模擬器 2,adb:5557
依此類推
如上所示,在埠 5555 處與 adb 連接的模擬器與控制台監聽埠為 5554 的模擬器是同一個。
伺服器與所有設備均建立連接後,您便可以使用 adb 命令訪問這些設備。由於伺服器管理與設備的連接,並處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設備。
要在通過 USB 連接的設備上使用 adb,您必須在設備的系統設置中啟用 USB 調試 (位於 開發者選項 下)。
在搭載 Android 4.2 及更高版本的設備上,「開發者選項」屏幕默認情況下處於隱藏狀態。如需將其顯示出來,請依次轉到 設置 > 關於手機 ,然後點按 版本號 七次。返回上一屏幕,在底部可以找到 開發者選項 。
在某些設備上,「開發者選項」屏幕所在的位置或名稱可能有所不同。
執行 adb devices 驗證設備是否已連接。如果已連接,您將看到設備名稱以「設備」形式列出。
一般情況下,adb 通過 USB 與設備進行通信,但您也可以在通過 USB 完成一些初始設置後,通過 WLAN 使用 adb,如下所述。
如果 adb 連接斷開:
如果有多個設備在運行,您在發出 adb 命令時必須指定目標設備。為此,請使用 devices 命令獲取目標設備的序列號。獲得序列號後,請結合使用 -s 選項與 adb 命令來指定序列號。如果您要發出很多 adb 命令,可以將 $ANDROID_SERIAL 環境變數設為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL , -s 會替換 $ANDROID_SERIAL 。
$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
如果有多個可用設備,但只有一個是模擬器,請使用 -e 選項將命令發送至該模擬器。同樣,如果有多個設備,但只連接了一個硬體設備,請使用 -d 選項將命令發送至該硬體設備。
使用 forward 命令設置任意埠轉發,將特定主機埠上的請求轉發到設備上的其他埠。以下示例設置了主機埠 6100 到設備埠 7100 的轉發:
>adb forward tcp:6100 tcp:7100
您可以使用 pull 和 push 命令將文件復制到設備或從設備復制文件。與 install 命令(僅將 APK 文件復制到特定位置)不同,使用 pull 和 push 命令可將任意目錄和文件復制到設備中的任何位置。
如需從設備中復制某個文件或目錄(及其子目錄),請使用以下命令:
adb pull remote local
如需將某個文件或目錄(及其子目錄)復制到設備,請使用以下命令:
adb push loca remote
adb kill-server
您可以使用 shell 命令通過 adb 發出設備命令,也可以啟動互動式 shell。如需發出單個命令,請使用 shell 命令,如下所示:
adb [-d |-e | -s shell shell_command
在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、廣播 intent、修改設備屏幕屬性,等等。在 shell 中,相應的語法為:
您也可以直接從 adb 發出 Activity 管理器命令,無需進入遠程 shell。例如:
adb shell am start -a android.intent.action.VIEW
Ⅷ Windows埠轉發(Port Forwarding in Windows)
在Windows系統中,從XP開始就內嵌了一個設置網路埠轉發的功能。依靠這個功能,任何到本地埠的TCP連接(ipv4或ipv6)都能夠被轉發到任意一個本地埠,甚至是遠程主機的某個埠。並且,Windows系統並不需要去開啟監聽這個轉發埠的服務。
在Windows伺服器中,遠程訪問控制協議(RRAS)通常被用作埠轉發,但是有一種更簡單的配置方法,並且這種配置方法適用於windows的任意版本。
Windows系統下的埠轉發使用portproxy模式下的netsh命令,該命令的使用前提是要在管理員身份打開cmd進行執行。
netsh interface portproxy add v4tov4 listenaddress =localaddress listenport = localport connectaddress =destaddress connectport =destport protocol= tcp
listenaddress – 待連接的ip地址。
listenport –待連接的tcp本地埠 。
connectaddress – 待連接被轉發的本地或遠程主機的ip地址(支持域名)
connectport –從listenport轉發到的tcp埠
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
1) netstat -ano | findstr :3340來驗證3340埠是否正在監聽中,如果該命令沒有返回任何信息,或者說通過netsh介面並沒有實現埠轉發的功能,那麼需要查看下系統是否開啟了iphlpsvc(ip Helper)服務。
2) tasklist | findstr 3340查看監聽該埠的進程
3) 檢查防火牆是否關閉,如果關閉則跳過。如果打開需要手工配置相應的防火牆。
連接時請確保防火牆(Windows防火牆或者其他的第三方防護軟體)允許外部連接到一個全新的埠,如果不允許,那麼只能自行添加一個新的Windows防火牆規則,命令如下:netsh advfirewall firewall add rule name=」forwarded_RDPport_3340」 protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow
當通過Windows防火牆介面為3340埠建立一個新的規則時,這個埠需要保證沒有被任何程序佔用,也就是說此埠僅供網路驅動使用。你可以創立任意的Windows埠轉發規則,所有的netsh介面下的埠代理規則都是永久的,並且儲存在系統中(不受開機重啟的影響)。
查看系統中的所有轉發規則是否生效:
netsh interface portproxy show all
查看埠轉發的設置:netsh interface portproxy mp
刪掉一個特定的埠轉發規則:
netsh interface portproxy delete v4tov4
清空當前所有的配置規則:
netsh interface portproxy reset
從遠程主機來嘗試連接這個新轉發的埠3340,3340埠等同於原來的3389埠,連接的地址為10.10.1.110:3340。
注意:這些轉發規則僅僅適用於TCP埠,對於UDP的埠轉發,使用上面的方法是無效的。在配置規則時,不能將127.0.0.1作為連接地址。
1) 通過一台windows機器埠轉發到一台windows遠程主機
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101
2) 通過一台ipv4的Windows機器轉發到一台ipv6的伺服器。
netsh interface portproxy add v4tov6 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=ffff::66
1) 在Windows Server 2012 R2中,埠轉發規則有可能會在系統重啟後被重置,在這種情況下,需要在網路協議中檢查是否存在配置不當,導致網路的間斷性斷開,或者當系統重啟時是否出現了ip地址的變換(推薦使用靜態ip)。在一個工作組里,通常是在windows任務計劃程序里添加了一個實現埠轉發的腳本。
2) 在Windows 2003/XP中,必須在注冊表(HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters)中找到並設置IPEnableRouter參數為1才能實現埠轉發。
3) 防火牆規則檢查
4) 埠轉發依賴的ip helper服務是否啟動
5) 埠轉發是否生效
6) Windows7和WindowsServer2008R2安全事件的說明 操作系統日誌標識
Windows日誌查看
6273 網路策略伺服器拒絕用戶訪問。
6274 網路策略伺服器放棄用戶的請求。
4868 證書管理器拒絕了掛起的證書請求。
4870 證書服務吊銷了證書。
4944 當啟動 Windows 防火牆時,以下策略處於活動狀態。
4945 當啟動 Windows 防火牆已列出規則。
4946 Windows 防火牆例外列表已更改。添加的規則。
4947 Windows 防火牆例外列表已更改。修改規則的。
4948 Windows 防火牆例外列表已更改。規則已被刪除。
4949 Windows 防火牆設置都恢復為默認值。
4950 更改 Windows 防火牆設置。
4951 Windows 防火牆忽略規則,因為無法識別的主要版本號。
4952 Windows 防火牆忽略規則的部分,因為無法識別它的次要版本號。將強制執行該規則的其他部分。
4953 由於無法分析,Windows 防火牆將忽略規則。
4954 Windows 防火牆組策略設置已更改,並且未應用新設置。
4956 Windows 防火牆更改活動配置文件。
5024 Windows 防火牆服務已成功啟動。
5025 Windows 防火牆服務已停止。
5027 Windows 防火牆服務無法從本地存儲區中檢索的安全策略。Windows 防火牆將繼續執行當前的策略。
5028 Windows 防火牆無法分析新的安全策略。Windows 防火牆將繼續執行當前的策略。
http://woshub.com/port-forwarding-in-windows/
Ⅸ ssh埠轉發的命令解讀
ssh如果設置了使用數字證書,那麼連接的時候是用這個證書做登陸時的加密解密的
然後,雙方會傳遞一個口令,用語數據傳遞時的加密和解密,因為這個對稱模式比非對稱模式速度高。幾分鍾後重新換一個的,
注意,如果數據轉給其他設備了,那麼轉之前是解密的,因為對方不知道密文如何解的
Ⅹ netsh命令實現計算機本地埠轉發(埠映射)
運行cmd
添加轉發在命令行輸入如下:
回車後就會將本機的8080埠轉發到192.168.1.2這個主機
查看所有埠轉發的狀態:
刪除埠轉發: