Scenario
想在上课的时候用笔记本(Windows)远程回实验室的台式机(Windows)工作,TeamViewer 莫名崩掉,寻求另一个方案。有时只要用 ssh 就行,远程桌面也行。
jupyter notebook/lab、tensorboard 是用浏览器访问的。
Notes
其实 ngrok 在 linux 和 mac 都有,只是我两台都是 windows。
用的是一个国内免费服务器(叫小米球?),软件也是在它那下的,见 [1] 和 [4]。
Steps
使用教程在 [4] 有介绍,几个平台的都有。
in desktop
在实验室被访问的机器上安装、配置 ngrok 客户端,然后启动,就像开着 teamviewer 等着被连。
-
去 [4] 那下个 ngrok 的客户端软件(比如 windows64位 版),解压。
-
去 [5] 注册一个帐号,获取 token。注册、登录后,在页面左边点开
系统管理
->账户管理
->我的账户
,就会有一栏显示小米球Token
。这个 token 等下要写到配置文件里。 -
解压目录下有给出一个
ngrok.conf
和ngrok1.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
默认就是它提供的免费代理服务器,不用改,除非是自己配代理服务器。
保存退出。
-
命令行启动 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>
:
点连接之后就会让输入用户名、密码,搞掂。
jupyter & tensorboard
这两个是用浏览起访问的,网址是<subdomain>.<server_addr>
,其中::<remote_port>
subdomain
是配置文件里jupyter
和tensorboard
里设的对应值;server_addr
跟前面一样,也不要那个端口;remote_port
,配置文件里对应隧道设的值;
如访问 jupyter:jupyter.ngrok2.xiaomiqiu.cn
:50002