完敗ngrok?一鍵開啟內網穿透神器serveo

2019-08-03     Jkanon

啥是內網穿透?舉個栗子,工作中我們經常遇到以下場景:

  • web 應用開發

向別人展示我們本機(區域網)的web demo以及調試一些遠程的API (比如微信公眾號,企業號的開發)

  • 內網項目的訪問

一般項目部署在內網環境之後,遠程調試(包括資料庫訪問)是比較困難的一件事。這個時候可以使用 tcp 協議去連接訪問,減少了出差的必要性。

  • 硬體設備操控

從事物聯網相關行業的用戶和設備打交道比較多,但是大多數情況下,設備很難有自己的公網IP。

這些情況下我們就需要一款神器來讓我們的服務暴露在公網之中,以從其它任何地方進行訪問。那到底我們該怎麼做?按照以往的經驗,我們可以選擇花生殼,或者ngrok。

但是今天我要介紹的是一個更好的選擇:serveo。

神奇之處就在於無需下載安裝任何的軟體,一條命令搞定!,更重要的是它免費,完全免費,真的免費,重要的事說三遍!

基本用法

假設你想要在公網之中暴露3000埠,那麼你只需在命令終端中輸入以下命令:

ssh -R 80:localhost:3000 serveo.net

終端會用綠色字體提供一個網址(如果是初次輸這條命令,會詢問你是否相信傳送過來的RSA鑰匙指紋,請選擇 yes),你就可以用提供的網址從任何一台能夠訪問網際網路的電腦,用瀏覽器來進行訪問。如下圖:

其它用法

  • 埠轉發

如果對80,443,22以外的埠進行轉發,那將是原始的tcp包

  • 自定義域名

綁定自己已有的域名或子域名

更多用法詳情請訪問官網。

Windows用戶

由於這個命令是用ssh來生成的,因此只適用於類unix系統,如Linux和Mac。

但是window用戶也不是沒法使用,只是得走些彎路(經網友提醒,win10已自帶OpenSSH,這裡一併討論)。

  • 安裝OpenSSH客戶端
  • win10

win10默認自帶OpenSSH,如果cmd無法識別ssh命令,那可能是此功能未啟用,需要配置啟用一下。

啟用方法:

  1. 在Win10任務欄的Cortana小娜搜索框中輸入「可選功能」,然後點擊搜索結果中的「添加可選功能」打開「管理可選功能」窗口。
  2. 點擊「添加功能」按鈕,在可選功能列表中即可看到「OpenSSH客戶端」。
  3. 選中它,點擊「安裝」按鈕即可安裝OpenSSH客戶端。

安裝成功之後,在cmd命令提示符窗口中即可運行ssh命令。

  • 其它window系統

微軟的Powershell團隊已將OpenSSH進行開源,大家可以到github上下載,請戳這裡。或者筆者也將早前下載的上傳了度盤,下載請戳這裡。

下載解壓後將解壓目錄添加進PATH環境變量或者進入解壓目錄啟動cmd即可進行ssh操作。

  • 安裝git for window,從git bash執行命令

Git for Windows 提供了一個仿真環境,這樣我們可以通過git bash執行ssh命令。

其它問題

  • Invalid Host Header

使用了webpack-dev-server的前端項目進行內網穿透的時候,瀏覽器顯示Invalid Host Header。

原因:webpack-dev-server出於安全考慮,默認檢查hostname,如果hostname不是配置內的,將中斷訪問。

解決辦法:設置 webpack-dev-server 的配置項 disableHostCheck 為 true 以禁用這一檢測。

文章來源: https://twgreatdaily.com/zh-mo/fhCE6mwBJleJMoPMJBIT.html