Jupyter Notebook 默认仅监听 127.0.0.1:8888,需配置 c.NotebookApp.ip='0.0.0.0'、c.NotebookApp.allow_remote_access=True、设密码并开放防火墙端口才能远程访问。

直接在服务器上运行 jupyter notebook 默认只监听 127.0.0.1:8888,本地浏览器根本连不上——必须改配置、开端口、设密码,缺一不可。
为什么 jupyter notebook 启动后本地打不开?
默认行为就是只绑定本地回环地址,这是安全设计,不是 bug。你用 curl http://localhost:8888 在服务器上能通,但换台电脑访问 http://服务器IP:8888 就会超时或拒绝连接。
-
c.NotebookApp.ip = '0.0.0.0'才能让服务监听所有网卡,不是'*'(旧文档写法已弃用) -
c.NotebookApp.allow_remote_access = True是 6.0+ 版本必需项,否则即使绑了0.0.0.0也会被拒绝 - 没设密码或没生成配置文件,
jupyter notebook会直接报错退出,不给你启动机会
怎么安全启动并后台常驻?
别用裸跑 jupyter notebook,它一关终端就停;也别用 --no-browser --port=8888 就完事——漏掉密码和远程开关,等于把 notebook 暴露在公网裸奔。
- 先生成配置:
jupyter notebook --generate-config - 设密码(推荐自动方式):
jupyter notebook password,输两次,自动写进~/.jupyter/jupyter_server_config.json - 追加关键配置(用
echo直写,避免手动编辑出错):echo "c.NotebookApp.allow_remote_access = True" >> ~/.jupyter/jupyter_notebook_config.py echo "c.NotebookApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_notebook_config.py echo "c.NotebookApp.port = 8888" >> ~/.jupyter/jupyter_notebook_config.py echo "c.NotebookApp.open_browser = False" >> ~/.jupyter/jupyter_notebook_config.py
- 后台启动:
nohup jupyter notebook --no-browser > jupyter.log 2>&1 &,日志落盘方便查错
防火墙和端口转发容易被忽略的点
配置全对,jupyter 也起来了,但还是连不上——八成是防火墙或 SSH 隧道没配对。
- Ubuntu 上:
sudo ufw allow 8888/tcp;CentOS 上:sudo firewall-cmd --permanent --add-port=8888/tcp && sudo firewall-cmd --reload - 如果服务器没公网 IP,必须走 SSH 隧道:
ssh -N -L 8888:localhost:8888 user@server_ip,然后本地访问http://localhost:8888 - 别信“开了 8888 就行”——有些云厂商(如阿里云、腾讯云)还有安全组规则,得单独放行端口
真正卡住人的地方从来不是命令记不住,而是 allow_remote_access 没开、防火墙没放行、或者用了旧版配置项(比如 c.NotebookApp.password 在新版本里已失效,该用 jupyter server password)。跑之前多看一眼 jupyter.log,比反复重启强十倍。


















