Ngrok內(nèi)網(wǎng)穿透隨時可用高可用電腦

前言

雖然現(xiàn)在云服務(wù)非常普及了但有時需要隨時隨地使用高性能的開發(fā)服務(wù)器。租云服務(wù)一個是太貴了第二是整套環(huán)境重新搭建費(fèi)時又費(fèi)力。今天花了點(diǎn)時間使用Ngrok的網(wǎng)穿透能力基本搞定一個相對靠譜的環(huán)境。
以下步驟基本復(fù)制:https://xukimseven.github.io/2018/01/18/Ngrok%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F.html
只是有一些小步驟沒調(diào)通,自己做了些修改。

1、準(zhǔn)備

一臺云服務(wù)器(已租用),一個域名(其實(shí)也可以不用),并且域名解析到云服務(wù)器,并且服務(wù)器的操作系統(tǒng)為CentOS7(amd64)

2、安裝環(huán)境

安裝gcc和git(用于下載ngrok源碼)

yum install gcc -y
yum install git -y

3、安裝go語言環(huán)境

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

4、檢查環(huán)境安裝

git --version //( >= 1.7 )
go version

5、在服務(wù)器上搭建Ngrok服務(wù)

5.1.下載ngrok源碼

git clone https://github.com/inconshreveable/ngrok.git

5.2.生成證書

cd ngrok
#這里修改為自己的域名
export NGROK_DOMAIN="cbcye.com"

openssl genrsa -out rootCA.key 2048

openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem

openssl genrsa -out device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

5.3.將新生成的證書替換,執(zhí)行下面命令后 “y” 回車 一行一行執(zhí)行代碼!

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

6、編譯生成ngrokd(服務(wù)端)

GOOS=linux GOARCH=amd64 make release-server

? 生成在~/ngrok/bin/目錄中

7、編譯生成ngrok(客戶端)

GOOS=windows GOARCH=amd64 make release-client

? 生成在~/ngrok/bin/windows_amd64/目錄中

8、用SSH Secure Shell Client工具

將~/ngrok/bin/windows_amd64/里的文件下載到本地Windows下,如D:\ngrok

9、在D:\ngrok中新建文件,改名為 ngrok.cfg

文件中輸入:

server_addr: cbcye.com:8083
trust_host_root_certs: false
tunnels:
  thttp:
    remote_port: 8080
    proto:
     tcp: 80

  thttps:
    remote_port: 8443
    proto:
     tcp: 443
            
  mstsc:
     remote_port: 3389
     proto:
      tcp: 3389

Ngrok Conigure配置文件采用YAML格式,即對縮進(jìn)有要求,冒號后面加空格才是數(shù)字。以上 8083 80 443 與 遠(yuǎn)程開啟的端口一致,

根據(jù)自己的實(shí)際情況在服務(wù)器后臺安全組規(guī)則中開啟或刪除。

10、開啟遠(yuǎn)程服務(wù)

在ngrok目錄中

如果不在

cd ngrok
sudo ./bin/ngrokd -domain="cbcye.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

這里的端口號與config文件對應(yīng),視情況而定

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry][tun] No affinity cache specified

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds


顯示此為成功開啟

11、開啟客戶機(jī)服務(wù)

在Windows中D:\ngrok新建文件 改名 start.bat

輸入:

ngrok -config=ngrok.cfg start http https ssh mstsc

直接雙擊運(yùn)行

如果是為了在Windows中后臺運(yùn)行則在bat文件前面增加如下代碼:

@echo off 
    if "%1" == "h" goto begin 
    mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
    :begin 

ngrok

Tunnel Status online

Version 1.7/1.7

Forwarding http://www.abc.com -> 127.0.0.1:80

Forwarding https://www.abc.com -> 127.0.0.1:443

Forwarding tcp://abc.com:2222 -> 127.0.0.1:22

Forwarding tcp://abc.com:52222 -> 192.168.1.7:3389

Web Interface 127.0.0.1:4040

Conn 0

Avg Conn Time 0ms


表示成功,

不成功的話看看自己的開啟端口是否與config文件中對應(yīng)

或查看服務(wù)器的遠(yuǎn)程端口是否在安全組中打開

?。。∵@很重要?。?!


關(guān)于ngrok在遠(yuǎn)程開機(jī)自啟問題

服務(wù)器后臺開機(jī)啟動運(yùn)行ngrok服務(wù)端:

1.以下內(nèi)容新建一個 start.sh 文件 放到 ~/ngrok/start.sh

~/ngrok/bin/ngrokd -domain="abc.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

給權(quán)限:

chmod 755 ~/ngrok/start.sh

2.新建ngrok啟動腳本文件

sudo vi /etc/init.d/ngrok

文件內(nèi)容:

!/bin/sh
# chkconfig: 2345 90 60
BEGIN INIT INFO

Provides:          ngrok

Required-Start:

Required-Stop:

Default-Start:     2 3 4 5

Default-Stop:      0 1 6

Short-Description: Start or stop the ngrok Proxy.

END INIT INFO

ngrok_path=~/ngrok/

case "$1" in

    start)
            echo "start ngrok service.."
            sh ${ngrok_path}/start.sh
            ;;
   *)
    exit 1
    ;;
esac

提示 : 運(yùn)行sudo vi /etc/init.d/ngrok之后 !!直接按鍵盤 I 進(jìn)入編輯模式,然后復(fù)制下面內(nèi)容 然后 “esc” ":" "wq" "!" “回車” 意思是保存退出!

3.ngrok腳本文件 給權(quán)限

cd /etc/init.d
chmod 755 ngrok

4.添加啟動服務(wù) ngrok

chkconfig --add ngrok

5.測試服務(wù)是否能啟動成功

service ngrok start

6.查看自啟動的服務(wù) 是否有 nrgok !!

chkconfig    

執(zhí)行這個代碼如果出現(xiàn)后面的就OK了??! ngrok 0:off 1:off 2:on 3:on 4:on 5:on 6:off

服務(wù)器ngrok的服務(wù)端開機(jī)自動啟動成功了!??!


? 這樣一來,自己的電腦就成 了一臺服務(wù)器,只要電腦不關(guān),且連著網(wǎng)的話,就非常適合做一個小型網(wǎng)站的測試平臺了。

? 如果看到這篇文章還有什么疑問想要尋求幫助的,歡迎聯(lián)系本人。微博、qq、微信在文章末尾處。歡迎來告訴我你的想法。

? 如需轉(zhuǎn)載,請注明出處,謝謝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容