最稳妥方式是直接运行jupyter notebook password命令,它自动生成argon2哈希并写入jupyter_notebook_config.json,无需进python交互环境或手动调用passwd(),新版jupyter(≥6.0)默认支持且更安全。

直接用 jupyter notebook password 命令最稳妥
不用进 Python 交互环境,也不用手动调用 passwd(),新版 Jupyter(≥6.0)已内置命令行设密功能。执行后密码哈希会自动写入 ~/.jupyter/jupyter_notebook_config.json,后续只需确保配置文件里启用了该 JSON 文件即可。
- 在终端运行
jupyter notebook password - 输入密码(不显示),再确认一次
- 成功后提示类似:
[NotebookPasswordApp] Wrote hashed password to /home/xxx/.jupyter/jupyter_notebook_config.json - 该命令会生成
argon2:开头的哈希(比旧版sha1:更安全)
from notebook.auth import passwd 在什么情况下必须用
当你用的是老版本 Jupyter(如 5.x),或你正在写自动化脚本、需要把哈希值嵌入配置文件而非依赖 JSON 文件时,才需要手动调用函数。注意:不同 Jupyter 版本对应不同模块路径:
- Jupyter Notebook ≤ 5.x:
from notebook.auth import passwd - Jupyter Server(6.0+ 默认后端):
from jupyter_server.auth import passwd - 混用会导致
ImportError或密码无效 - 输出的哈希字符串必须原样复制,包括
u'argon2:...'中的u'和引号(如果配置文件是 Python 格式)
密码没生效?重点检查这三处
即使哈希正确,Jupyter 仍可能跳过认证——常见于配置项冲突或加载逻辑变化:
-
c.NotebookApp.password(旧版)或c.ServerApp.password(新版)必须显式赋值,不能只靠jupyter_notebook_config.json - 若同时存在
c.NotebookApp.password = u'...'和jupyter_notebook_config.json,后者会被忽略 - 启动时加了
--no-browser但没加--allow-root(root 用户下必须加,否则静默失败) - Ubuntu/Debian 系统中,
systemd服务方式启动时,环境变量可能未加载,导致找不到配置文件
为什么改完配置还提示“Password required”却输不对
不是密码错了,而是哈希格式或配置位置不匹配:
- 用
jupyter notebook password生成的哈希默认存 JSON,但配置文件里写的是c.ServerApp.password = 'argon2:...'→ 必须删掉这行,让 Jupyter 自动读 JSON - 反过来,如果删了 JSON 文件但保留了
c.ServerApp.password那行 → 确保字符串开头没有多余空格,结尾没漏单引号 - 在 Ubuntu 22.04+ 上,
jupyter notebook命令实际调用的是jupyter server,所以必须用c.ServerApp.*前缀,c.NotebookApp.*会被忽略 - 改完配置后必须重启 Jupyter 进程,
kill -9掉残留的python -m jupyter.notebook进程再重开
jupyter --version 和 jupyter server --version 确认主版本,再决定用哪套路径和配置项。











