用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文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章