jupyter notebook + frp 实现外网访问

工作缘由:jupyter notebook 只能在局域网内部使用,假如你的工作计算机不在局域网内部就不能实现访问。因此需要添加一种内网穿透的工具来帮助我们使用任何能联网的计算机来访问notebook。
实质:服务器静态IP与内网动态IP之间建立某种协议,当计算机访问外网静态IP的某个端口时,外网服务器会将内容转发给内网计算机的相应端口,内网计算机相应端口要发送内容的时候也会经过外网静态IP,所以内网穿透实际上是一种数据转发工具(工具人实锤)。

首先你需要一个有外网IP的服务器,我这里是用的阿里云的轻量级服务器,然后使用内网穿透frp工具。

这个工具分为客户端和服务端,在具有外网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.XXX   % 你的服务端IP地址
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.XXX % 你的服务端IP地址

$ ./frpc -c ./frpc.ini        % 运行客户端

此时,可以通过外网ssh到笔记本,通过remote端口访问服务器,会将这个端口的接受数据映射到客户端去访问。

$ ssh -p 6000 user&101.200.151.XXX
% 其中,6000是remote端口,user是笔记本的用户名,101.200.151.XXX是服务器外网IP地址

jupiter操作,指定local_port,和配置文件

$ jupyter notebook --config=/home/user/.ipython/profile_myserver/ipython_notebook_config.py --port 8888

注意:轻量级服务器的防火墙一定要把相应的端口打开,不然怎么都访问不了的,我这里打开了7000和8888这两个端口。

posted @ 2019-11-11 22:13  全部都烧起来~  阅读(2234)  评论(0编辑  收藏  举报