能,但需配置c.serverapp.ip='0.0.0.0'和c.serverapp.allow_remote_access=true,并放行防火墙端口、设置密码;wsl2用户须用windows主机ip配合端口转发,不可直接用wsl内网ip。

能,但默认不能——Jupyter Notebook 启动时绑定的是 127.0.0.1,只响应本机请求。要让局域网内其他人看到,必须显式改绑 IP、放行端口、处理认证,缺一不可。
怎么改配置让别人能连上
核心是把服务从“只听 localhost”改成“听所有网卡”。关键配置项只有两个,且必须同时生效:
-
c.ServerApp.ip = '0.0.0.0'(不是'*',新版 Jupyter 已弃用该写法) -
c.ServerApp.allow_remote_access = True(旧版叫c.NotebookApp.allow_remote_access,不加这行即使绑了0.0.0.0也会拒绝外部连接)
生成配置文件后,直接在 ~/.jupyter/jupyter_notebook_config.py 末尾追加这两行即可。别碰 c.ConnectionFileMixin.ip,那是旧版残留字段,已失效。
为什么配完还是打不开网页
常见原因不是配置错,而是被系统拦在门外:
- Windows 防火墙默认阻止入站 TCP 连接,必须手动添加规则:允许端口
8888(或你指定的端口)的入站 TCP 流量 - WSL2 用户额外要注意:Windows 主机防火墙放行后,还需在 PowerShell(管理员)运行
New-NetFirewallRule -DisplayName "Jupyter WSL" -Direction Inbound -LocalPort 8888 -Protocol TCP -Action Allow - Linux 用户检查
ufw是否启用:sudo ufw status,若为 active,需执行sudo ufw allow 8888
仅关闭防火墙是下策,既不安全也不符合生产习惯。
怎么避免别人随便进你笔记本
不设密码=裸奔。Jupyter 不再支持 token 模式(--no-browser 后的 URL 中的 token 已被移除),必须用密码:
- 运行
jupyter notebook password设置密码,它会生成哈希并写入~/.jupyter/jupyter_notebook_config.json - 配置文件里补上
c.ServerApp.password = 'sha1:xxx:yyy'(复制 json 文件里的完整字符串,含sha1:前缀) - 别用
passwd()在 IPython 里手动生成——容易选错算法,新版默认用argon2,但某些旧环境只认sha1,不匹配就登录失败
密码一旦设错,浏览器只会显示空白页或 403,无任何提示,这是最常被卡住的点。
WSL 用户特别注意的坑
WSL2 的网络是 NAT 模式,它的 IP(如 172.28.x.x)对 Windows 主机是可见的,但对局域网其他设备不可见。所以:
- 不能直接用 WSL 的 IP(
hostname -I输出的那个)给同事访问 - 正确做法是:在 Windows 上用
netsh interface portproxy做端口转发,把主机的192.168.x.x:8888映射到 WSL 的172.28.x.x:8888 - 或者更简单:启动 Jupyter 时加
--ip=0.0.0.0 --port=8888 --no-browser,然后在 Windows 浏览器里访问http://localhost:8888,再把 Windows 主机的局域网 IP(ipconfig查到的192.168.x.x)发给别人
很多人卡在“用 WSL IP 访问失败”上,其实根本没意识到 WSL2 的 IP 天然不出网。











