工作缘由:jupyter notebook 开始只能在局域网内部使用,感觉很是麻烦,需要添加一种内网穿透的工具来使得能像访问外网一样的访问notebook。
首先这需要一个有外网IP的服务器,我这里是用的阿里云的轻量级服务器,这样就可以建立访问映射关系,我这里选用的是frp工具。
在这个网址可以下载到最新的工具
https://github.com/fatedier/frp/releases
这个工具分为客户端和服务端,在具有外网IP的服务器上运行服务端,在具有内网IP的笔记本上运行客户端,这样就能通过外网访问笔记本上的终端了。
具体操作是这样:
服务器上
$ vim frps.ini % 此文件是服务端的配置文件
[common]
bind_port = 7000 % 访问端口
vhost_http_port = 8888 % 配置notebook的端口
% 运行服务端程序
$ ./frps -c ./frps.ini
客户端
$ vim frps.ini % 此文件是客户端的配置文件
[common]
server_addr = 101.200.151.68 % 服务端的地址
server_port = 7000 % 服务端的端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 % ssh 的时候需要设置的端口
[jupyter]
type = http
local_port = 8888 % jupiter访问时的端口
custom_domains = 101.200.151.68 % 服务端的地址
$ ./frpc -c ./frpc.ini % 运行客户端
此时,可以通过外网ssh到笔记本
$ ssh -p 6000 user&101.200.151.68
% 其中,6000是remote端口,user是笔记本的用户名,101.200.151.68是服务器外网IP地址
也就是说,通过remote端口访问服务器,会将这个端口的接受数据映射到客户端去访问。
jupiter操作
$ jupyter notebook --config=/home/user/.ipython/profile_myserver/ipython_notebook_config.py --port 8888
指定local_port,和配置文件
还有最重要的一点,就是轻量级服务器的防火墙一定要把相应的端口打开,不然怎么都访问不了的,我这里打开了7000和8888这两个端口。