日常開發中,我們經常有內網穿透需求,比如需要把內網開發機器上的**給外網使用者演示用。
解決這個問題的辦法很多,有的簡單,有的複雜。
路由器埠對映
ssh 這種方案是比較快捷的,且不依賴第三方服務。
實驗條件:
1.公網機器:centos7 , 192.168.0.110 (由於是做實驗,沒有直接用公網機器來做)
2.內網開發機:本機 win10(可以是其他可以使用ssh客戶端的任何機器),本機執行了乙個web程式,埠8888
實驗目的:
通過訪問 的請求**到 本地 8888
實驗步驟:
1.配置 192.168.0.110 防火牆 埠:
firewall-cmd --zone=public --add-port=70/tcp --permanent
firewall-cmd --reload
配置檔案:/etc/ssh/sshd_config
需要修改的配置項: gatewayports =yes
如果不修改,**埠永遠繫結到 loopback 網路介面,配置成功後,只能在 192.168.0.110 機器上用 localhost:70訪問,無法在其他機器上用 192.168.0.110:70訪問
3.win10 機器上,開啟powershell ,輸入以下命令建立隧道:
ssh -p 22 -qngfntr "[::]:70:localhost:8888" [email protected]
引數說明:
-p : 是 192.168.0.110 是ssh 埠
"[::]:70:localhost:8888" : [::]:70 表示把70埠繫結到所有的網路介面上;localhost:8888表示需要被**的內網伺服器端口,本例中是localhost:8888
[email protected] : 公網機器 使用者名稱 ip , 本實驗用內網機器模擬。
4.大功告成:
在任意一台機器上就可以通過
訪問 win10機器上的web服務了。
實驗過程中踩過的坑:
1.win10 powershell 中 關閉 ssh 連線視窗後,ssh 隧道沒有關閉的問題:
檢視已經建立的ssh連線:
get-process -name ssh
殺死ssh連線:
get-process -name ssh | stop-process
其他ssh客戶端需要注意類似的問題,否則多次執行 ssh -p 22 -qngfntr "[::]:70:localhost:8888" [email protected] 會建立多個隧道
2.請注意 繫結都所有網路介面 "[::]:70:localhost:8888" ,[::] 不能少,否則 只會繫結到 loopback 介面。
5分鐘搞定Schema
事先宣告 搞定不是精通,只是能夠運用!其實schema很簡單,之前寫過dtd,比dtd學習成本還低!最近做的專案基於檔案系統的,一堆的xml檔案,所以想寫個驗證,也方便ide操作,既然推薦schema,那就用schema d 不廢話,看xml檔案。ivan hihello 這個應該算是個比較典型的x...
5分鐘搞定快速排序
直接切入主題,快速排序分為兩過程 挖抗填數 分治法 先說下分治法,顧名思義就是 分而治之 的核心思想。簡單舉個例子體會一下 現在有100個人需要按照身高排成一列。首先,定個身高基準1.7m 定得太高和太低都會打破平衡 高與1.7m的都站在一列的右端,低於1.7m的都站在一列的左端。1.7m即為左右端...
5分鐘搞定快速排序
首先找到陣列中的乙個基準值 通常是中間值 遍歷陣列,如果比基準值小就放到左邊,比基準值大放到右邊 以基準值左右兩邊的子列作為新數列,不斷重複第一步和第二步 迭代法 def quick sort arr if len arr 2 return arr mid arr len arr 2 基準值 lef...