jupyter notebook局域网访问需将c.notebookapp.ip设为'0.0.0.0'以监听所有网卡,并启用c.notebookapp.allow_remote_access=true,配合防火墙放行端口及路由器/系统级静态ip配置,才能实现稳定共享。

不能直接设置“静态IP访问”——Jupyter本身不分配或管理IP,它只绑定到你机器已有的IP地址。真正要做的,是让它监听你局域网中那个固定的、不会变的IP(比如192.168.1.105),而不是默认的127.0.0.1。
为什么c.NotebookApp.ip = '192.168.1.105'通常不生效
很多人照着网上教程把配置改成c.NotebookApp.ip = '192.168.1.105',结果启动时报错Cannot assign requested address,或者访问失败。这是因为:
- Jupyter只能绑定到本机**实际存在且已启用**的网络接口对应的IP;
- 你的Wi-Fi/以太网IP可能每次重启路由器或电脑后就变了(DHCP动态分配);
- 即使IP当前有效,一旦网络重连,Jupyter服务不会自动更新绑定地址,直接挂掉;
- 手动写死IP还容易拼错、漏改子网掩码匹配的网段,导致其他设备无法路由到你。
c.NotebookApp.ip = '0.0.0.0'才是稳定选择
想让局域网内其他设备(手机、同事电脑)能访问,正确做法不是填某个具体IP,而是用通配地址0.0.0.0,它表示“监听所有可用网卡”。只要你的电脑有局域网IP(比如192.168.1.105或172.18.108.101),Jupyter就会自动响应发往该IP的请求。
实操步骤:
- 生成配置:
jupyter notebook --generate-config - 编辑
~/.jupyter/jupyter_notebook_config.py,取消注释并设为:c.NotebookApp.ip = '0.0.0.0' - 务必同时加:
c.NotebookApp.allow_remote_access = True(新版本必需) - 启动时加上
--no-browser,避免本地弹窗干扰
之后,别人用浏览器访问http://你的局域网IP:8888即可——这个IP你得自己用ipconfig(Windows)或ifconfig(macOS/Linux)实时查,而不是写死在配置里。
真要“静态IP”,得从操作系统/路由器层面做
Jupyter不控制IP,但你可以让本机IP固定下来,这样0.0.0.0绑定后,对外暴露的地址就稳定了:
-
路由器端:登录路由器后台,在DHCP保留列表里,把你的电脑MAC地址和想要的IP(如
192.168.1.105)绑定; - 系统端(Windows):网络适配器 → IPv4属性 → 手动填IP、子网掩码、网关、DNS;
-
系统端(macOS/Linux):用
nmcli或GUI网络设置设为手动IPv4,禁用DHCP。
做完这步,再执行ipconfig,看到的IPv4地址就基本不变了。这时你告诉同事“访问http://192.168.1.105:8888”,链接才真正“静态”可复用。
最常被忽略的一点:改完ip配置后,忘了开防火墙放行8888端口(Windows Defender防火墙 / macOS防火墙 / Linux ufw),结果服务跑着,但外部连接超时。这个必须单独确认,不能靠“配置写了就万事大吉”。











