/home/xxx/.jupyter/jupyter_notebook_config.py,其中xxx是你的用户名。$ jupyter notebook --generate-config
Writing default config to: /home/xxx/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip = '*' # configure the notebook server to listen on all network interfaces
# 也可以写成 c.NotebookApp.ip = '0.0.0.0',有一样的效果
c.NotebookApp.open_browser = False # disable the automatic launching of the web browser

现在可以在本地浏览器中通过ip:8888打开远程服务器上的notebook了。其中8888是notebook默认使用端口,IP是远程服务器的IP地址。这里没有对远程服务器的Jupyter设置密码,从安全角度考虑,建议大家设一个。
解释一下以上的配置,这种方法是通过将notebook server设成public的方式实现的。notebook server默认是只监听localhost/127.0.0.1这个接口的(By default the notebook server only listens on the localhost/127.0.0.1 network interface)。如果你想要从远程连接notebook的话,就需要使notebook可以监听所有的网络接口,并且不打开浏览器。
c.NotebookApp.ip = '*'这个配置使notebook server可以监听所有网络接口,而c.NotebookApp.open_browser = False这个配置关闭了浏览器自动打开设置。
以下是配置文件中的常用设置,也可以在启动notebook时用参数设置
| 常用设置 | 含义 |
|---|---|
| c.NotebookApp.ip = ‘*’ | 对所有ip都开放访问 |
| c.NotebookApp.open_browser = False | 关闭了浏览器自动打开设置 |
| c.NotebookApp.port = number | 默认端口设为number |
from notebook.auth import passwd; passwd()

jupyter的默认端口是8888,如果这个端口被占或者有别的设置端口的需求的话,可以通过修改配置文件
c.NotebookApp.port = number
或者启动jupyter时通过参数设置
jupyter notebook --port number
ip:8888/tree 打开jupyter notebook
ip:8888/lab 打开jupyter lab
(以下问题以及解决方法是一位同事总结的,感觉非常有用且经常参考,所以被我搬过来了)
以下排查点按从上到下顺序执行
| 排查点 | 命令 | 执行命令的地方 | 正常的现象 | 不正常的现象 | 如何解决 |
|---|---|---|---|---|---|
| 网络是否通畅 | ping 目标ip | 远程机器上 | 一直弹出新的进度 | 只显示一行,卡住不动 | 检测ip是否填错;找相关人解决 |
| 端口是否通畅 | nmap -p 端口 目标ip | 远程机器上 | ![]() | ![]() | 如果是closed:代表远程服务没有启动,或者由于服务原因导致你无法访问。请排查服务的配置中是否有限制访问ip的选项。如果是filterd:代表被防火墙过滤了,请排查防火墙限制问题 |
| jupyter配置是否限制了访问ip | 打开jupyter配置文件,查看c.NotebookApp.ip 配置 | c.NotebookApp.ip = ‘*’ 或者’0.0.0.0’代表对所有ip都开放访问 | #c.NotebookApp.ip ='localhost’或c.NotebookApp.ip = ‘localhost’ 这是默认值,代表只能在启动notebook的机器上访问 | 将这个配置设置为正确的格式即可 | |
| 防火墙是否有限制 | 只限centos7的解决方案 sudo firewall-cmd --list-ports | 启动notebook的机器上 | 防火墙关闭 ![]() 或者列出来的端口包含你启动notebook的端口 ![]() | 不包含这个端口 | 开放端口 sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent sudo firewall-cmd --reload |