使用frp内网穿透访问服务器内的Jupyter

设置Jupyter Notebook自启动

  • 首先要确保将Python加入环境变量,如果是Anaconda,也要将相应的目录加入环境变量中。
  • 创建jupyter.bat文件
1
2
3
4
5
6
7
# 用户名通过如下命令获取 在cmd中运行
echo %username%

# jupyter.bat文件内容
@echo off
cd C:/Users/用户名
start cmd /k "jupyter notebook"
  • 创建Windows自动任务,设置为启动时运行。

设置Jupyter Notebook密码

  • 设置Jupyter密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 在cmd中输入如下命令
jupyter notebook password

# 回车后,cmd中将显示如下内容
# 首先,显示Enter password,这个密码自行设置,设置过后要记住,这是明文密码,登录使用
# 其次,显示Verify password,重复输入上面的密码
# 最后,显示json文件存储路径
Enter password:
Verify password:
[JupyterPasswordApp] Wrote hashed password to C:\Users\用户名\.jupyter\jupyter_server_config.json

# jupyter_server_config.json 中的内容
{
"IdentityProvider": {
"hashed_password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$lx5OnxggAIE6XmI/Nn7LIg$vfIa4jw9U3Rv4y/pJZlj/9EDD7ns99MftjZnlFnGeU0"
}
}

设置Jupyter Notebook远程访问

  • 生成配置文件
1
2
3
4
5
# 在cmd中输入如下命令
jupyter notebook --generate-config

# 输出 配置文件存储路径
Writing default config to:C:\Users\用户名\.jupyter\jupyter notebook_config.py
  • 在配置文件中加入如下内容
1
2
3
4
5
6
7
c.NotebookApp.allow_remote_access = True  # 允许远程访问
c.NotebookApp.allow_root = True # 允许root访问
c.NotebookApp.ip='*' # 所有ip皆可访问
c.NotebookApp.password = 'jupyter_server_config.json中的hashed_password的值' # 即复制 argon2:$argon2id$v=19$m=10240,t=10,p=8$lx5OnxggAIE6XmI/Nn7LIg$vfIa4jw9U3Rv4y/pJZlj/9EDD7ns99MftjZnlFnGeU0
c.NotebookApp.open_browser = False # 禁止自动打开浏览器
c.NotebookApp.port =8888 # 端口,这是默认端口,可以自行设置
c.NotebookApp.notebook_dir = '设置Notebook启动进入的目录' # 这行可以不要,打开默认路径

服务端配置文件修改

  • 修改frps.toml文件,在其中加入vhostHTTPPort = 9090
1
2
3
4
5
6
7
8
9
10
11
12
13
# frps的通信端口 自行设置默认也行
bindPort = 9999
# 9090可以自行修改
vhostHTTPPort = 9090
# 与frpc通信的认证方式和token值
auth.method = "token"
auth.token = "igkadfgkadsgfguiaf"

# 面板的端口、账号和密码 端口自行设置默认也行
webServer.addr = "0.0.0.0" #注意该参数
webServer.port = 10000
webServer.user = "test"
webServer.password = "kjgsaflkjfafiuaf"

客户端配置文件修改

  • 修改frpc.toml文件,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# frps的地址和通信端口
# serverAddr设置自己的服务器公网IP
serverAddr = "1.1.1.1"
serverPort = 9999
# 与frps通信的认证方式和token值
auth.method = "token"
auth.token = "igkadfgkadsgfguiaf"

# 日志路径
log.to = "frpc.log"
# 日志级别
log.level = "info"
# 日志保存时间
log.maxDays = 3

# jupyter远程
[[proxies]]
name = "web"
type = "http"
# 与设置Jupyter Notebook远程访问中的端口要一直
localPort = 8888
# 域名要解析到服务器的公网ip上
customDomains = ["www.yourdomain.com"]

远程访问Jupyter

1
2
# 通过如下地址,在页面中输入明文密码,即可访问内网jupyter的服务了
http://www.yourdomain.com:9090

Windows将frp注册成系统服务

使用nssm,方法自行搜索。