远程访问服务器的 Jupyter

前言

Jupyter notebook 是一个非常好用的工具,如果你拥有一台云服务器,那么你就可以通过浏览器访问你的私人 Jupyter notebook,在任意一台没有 Python 环境的机器上运行它。

准备工作

这里默认你已经安装了 Anaconda,如果你没有安装,请先安装 Anaconda,这也是比较便利的选择。具体的安装过程不在赘述,一直下一步就好。

你也可以通过 清华镜像源 找到你需要的版本

1
2
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh
bash Anaconda3-2021.11-Linux-x86_64.sh

安装完记得配置环境变量 /etc/profile

远程访问 Jupyter

生成配置文件

1
jupyter notebook --generate-config

生成密码

打开 ipython,创建一个密文的密码

1
ipython
1
2
from notebook.auth import passwd
passwd()

你应该可以得到类似下面的输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@emoryhuang:/# jupyter notebook --generate-config
Writing default config to: /root/.jupyter/jupyter_notebook_config.py

root@emoryhuang:/# ipython
Python 3.9.7 (default, Sep 16 2021, 13:09:58)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.29.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'arg********rgon2i**************QOj+iQNG1K**************dhsYi6YPAQ'

In [3]:

请将输出的密钥保存,后面要用到

修改 Jupyper 配置文件

1
vim ~/.jupyter/jupyter_notebook_config.py

加入以下内容:

1
2
3
4
5
6
7
8
9
c.NotebookApp.ip = '*'              # 设置所有ip皆可访问
c.NotebookApp.password = u'...刚才复制的那个密文' # 刚才生成的密钥
c.NotebookApp.open_browser = False # 禁止自动打开浏览器
c.NotebookApp.port = 3333 # 随便指定一个端口
c.NotebookApp.allow_root = True # 允许root身份运行jupyter notebook

# ssl 配置
# c.NotebookApp.certfile = u'通向证书的绝对地址/mycert.pem'
# c.NotebookApp.keyfile = u'通向密钥的绝对地址/mykey.key'

记得打开对应的端口

启动 Jupyter notebook

1
jupyter notebook

远程访问

之后,你便可以通过浏览器访问 http://your_remote_ip:3333/ ,这个地址就是你的 Jupyter notebook 的地址。

如果你想要在关闭连接时也开启 Jupyter notebook, 可以输入以下命令:

1
nohup jupyter notebook

如何关闭?

查看正在运行的和 jupyter 有关的程序:

1
ps -aux | grep jupyter

找到对应的 PID

1
kill -9 PID

参考资料