手机无法访问jupyter notebook的三大主因是:c.notebookapp.ip未设为'0.0.0.0'、防火墙未放行端口(如8888)、root用户启动时未加--allow-root;须正确配置jupyter_notebook_config.py中ip、port、open_browser三项,并检查云安全组、本地防火墙及使用公网ip访问。

手机访问不了 Jupyter Notebook 的常见原因
不是配置没生效,就是漏掉了关键环节。最常卡在三处:c.NotebookApp.ip 没设成 '0.0.0.0' 或 '*';防火墙没放行端口(比如 8888);或者启动时没加 --allow-root(尤其用 root 用户时)。手机浏览器直接输 服务器IP:8888 打不开,大概率是这三者之一。
必须改的三个配置项(jupyter_notebook_config.py)
打开 ~/.jupyter/jupyter_notebook_config.py,确保以下三行存在且未被注释:
-
c.NotebookApp.ip = '0.0.0.0'—— 用'*'也行,但某些系统解析失败会报No address associated with hostname,'0.0.0.0'更稳 -
c.NotebookApp.port = 8888—— 端口可换,但得和防火墙、启动命令、手机访问地址保持一致 -
c.NotebookApp.open_browser = False—— 启动时不尝试弹本地浏览器,避免卡住
顺手加上这两行更安全:
c.NotebookApp.allow_remote_access = True-
c.NotebookApp.password = u'sha1:xxx...'—— 密码必须用from notebook.auth import passwd; passwd()生成,不能手写明文
启动命令和后台运行的关键细节
直接敲 jupyter notebook 会卡在前台,SSH 断开就挂了。正确做法是:
- 用
jupyter notebook --allow-root启动(root 用户必须加) - 想长期运行,用
nohup jupyter notebook --allow-root &,否则关终端就退出 - 别用
--no-browser替代c.NotebookApp.open_browser = False—— 前者只影响本次启动,配置文件里设才真正生效
启动后看终端输出的 URL,它显示的是 http://127.0.0.1:8888/,这是错觉——实际已监听全网,手机输 你的服务器公网IP:8888 即可。
手机访问前必须检查的三件事
缺一不可:
- 云服务器安全组(如阿里云/腾讯云)已放行你设的端口(比如
8888),协议选TCP - 本地防火墙(
ufw或firewalld)也开了同端口:sudo ufw allow 8888 - 手机和服务器不在同一局域网?那必须走公网 IP —— 内网穿透(如
ngrok.cc或花生壳)只是备选,优先配好公网直连
手机浏览器访问时,地址栏输 http://x.x.x.x:8888(别加 https,默认不启用 TLS),密码就是你用 passwd() 设置的那个。如果页面空白或转圈,先用电脑浏览器同样地址确认是否服务真起来了——手机问题往往源于服务端没跑通,而不是手机本身。











