用ngrok穿透內網訪問windows

Scenario

想在上課的時候用筆記本(Windows)遠程回實驗室的臺式機(Windows)工作,TeamViewer 莫名崩掉,尋求另一個方案。有時只要用 ssh 就行,遠程桌面也行。
jupyter notebook/lab、tensorboard 是用瀏覽器訪問的。

Notes

其實 ngrok 在 linux 和 mac 都有,只是我兩臺都是 windows。
用的是一個國內免費服務器(叫小米球?),軟件也是在它那下的,見 [1] 和 [4]。

Steps

使用教程在 [4] 有介紹,幾個平臺的都有。

in desktop

在實驗室被訪問的機器上安裝、配置 ngrok 客戶端,然後啓動,就像開着 teamviewer 等着被連。

  1. 去 [4] 那下個 ngrok 的客戶端軟件(比如 windows64位 版),解壓。

  2. 去 [5] 註冊一個帳號,獲取 token。註冊、登錄後,在頁面左邊點開系統管理->賬戶管理->我的賬戶,就會有一欄顯示小米球Token。這個 token 等下要寫到配置文件裏。

  3. 解壓目錄下有給出一個ngrok.confngrok1.conf,都是配置文件的例子。將其中ngrok.conf內容修改如下:

    server_addr: "ngrok2.xiaomiqiu.cn:5432"
    trust_host_root_certs: true
    inspect_addr: disabled
    auth_token: "<剛纔獲取的 token>"
    
    tunnels:
        ssh:
            remote_port: 50022
            proto:
                tcp: 127.0.0.1:22
    
        mstsc:
            remote_port: 53389
            proto:
                tcp: 127.0.0.1:3389
    
        jupyter:
            remote_port: 58888
            subdomain: jupyter
            proto:
                http: 127.0.0.1:8888
    
        tensorboard:
            remote_port: 56006
            subdomain: tensorboard
            proto:
                http: 127.0.0.1:6006
    

    其中:

    • auth_token改成剛纔獲取的那個小米球 token;
    • tunnels下面寫上自己需要的隧道(對應一個服務)。其中 ssh 就是用作命令行連接的,mstsc 就是遠程桌面;
    • remote_port範圍要在 50000~59999,隨便一個(見 [2],如果是自己配服務器應該就沒這限制);
    • server_addr默認就是它提供的免費代理服務器,不用改,除非是自己配代理服務器。

    保存退出。

  4. 命令行啓動 ngrok,軟件就是解壓目錄下的ngrok.exe,命令:

    ngrok -config=ngrok.conf -log=ngrok.log start ssh mstsc
    

    命令指明配置文件(就是上一步寫好那個)、日誌文件、啓動什麼隧道(start後面跟空格隔開的隧道名,對應配置文件裏寫的,可以一個或多個)。
    可以將此命令寫到一個run.cmd裏,方便以後啓用。

in laptop

實驗室的電腦啓動 ngrok 之後,就可以在筆記本上用 ssh 和 mstsc 遠程了。

ssh

比如用 win10 自帶的 OpenSSH Client(沒有就裝):

ssh -p 50022 <我實驗室主機的用戶名>@ngrok2.xiaomiqiu.cn

-p指明端口,就是配置文件裏 ssh 隧道指定的remote_port;網址就是配置文件裏的server_addr

mstsc

Win+R 啓動 mstsc(遠程桌面連接),計算機(C):(即網址)那欄寫的也是配置文件裏的<server_addr>:<remote_port>
mstsc
點連接之後就會讓輸入用戶名、密碼,搞掂。

jupyter & tensorboard

這兩個是用瀏覽起訪問的,網址是<subdomain>.<server_addr>:<remote_port>,其中:

  • subdomain是配置文件裏jupytertensorboard裏設的對應值;
  • server_addr跟前面一樣,也不要那個端口;
  • remote_port,配置文件裏對應隧道設的值;

如訪問 jupyter:jupyter.ngrok2.xiaomiqiu.cn:50002

References

  1. 一分鐘實現內網穿透(ngrok服務器搭建)
  2. Ngrok遠程桌面及ssh配置
  3. 基於ngrok實現ssh遠程內網傳透
  4. 小米球 ngrok
  5. 註冊帳號,獲取小米球 token
  6. .bat和.sh生成帶時間的log文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章