告别手动复制链接在 WSL2 中配置 Jupyter 后台服务与密码登录的完整指南如果你经常在 WSL2 中使用 Jupyter Notebook 进行数据分析、机器学习或日常开发工作可能会遇到这样的困扰每次启动 Jupyter 都需要手动复制粘贴链接到浏览器关闭终端窗口服务就会停止而且默认的令牌认证方式既不方便也不够安全。本文将带你彻底解决这些问题实现一键启动、后台运行、密码保护的 Jupyter 服务。1. 环境准备与基础配置在开始之前确保你的系统满足以下条件Windows 10 版本 2004 及以上或 Windows 11已启用 WSL2 并安装 Ubuntu 发行版推荐 20.04 LTS 或更新版本已安装 Python 环境Anaconda 或 Miniconda 均可首先更新系统并安装必要组件sudo apt update sudo apt upgrade -y sudo apt install python3-pip firefox -y安装 Jupyter Notebookpip install notebook --user提示如果使用 Anaconda可以通过conda install notebook命令安装验证安装是否成功jupyter notebook --version2. 生成配置文件与密码设置2.1 生成默认配置文件运行以下命令生成 Jupyter Notebook 的默认配置文件jupyter notebook --generate-config这会在你的用户主目录下创建.jupyter文件夹其中包含jupyter_notebook_config.py文件。2.2 设置访问密码相比默认的令牌认证密码认证更加方便安全。我们可以通过以下步骤生成密码哈希启动 Python 交互环境python3在 Python 环境中执行from notebook.auth import passwd passwd()按照提示输入并确认你的密码系统会返回一个类似下面的哈希值sha1:1b4ea9662b35:3e3d6a823d264d466f125a0939623c05e7b66007注意务必保存这个哈希值后续配置会用到3. 关键配置文件修改用文本编辑器打开~/.jupyter/jupyter_notebook_config.py文件修改以下关键参数# 允许任何IP访问 c.NotebookApp.ip * # 不自动打开浏览器 c.NotebookApp.open_browser False # 设置访问端口默认为8888 c.NotebookApp.port 8888 # 设置密码哈希替换为你生成的哈希值 c.NotebookApp.password sha1:1b4ea9662b35:3e3d6a823d264d466f125a0939623c05e7b66007 # 设置默认工作目录 c.NotebookApp.notebook_dir /path/to/your/notebooks对于较旧版本的 Jupyter Notebook可能还需要取消以下配置的注释c.NotebookApp.allow_remote_access True4. 实现后台服务运行4.1 使用 nohup 实现后台运行要让 Jupyter Notebook 在后台持续运行即使关闭终端窗口也不中断可以使用nohup命令nohup jupyter notebook /dev/null 21 这个命令做了以下几件事nohup忽略挂断信号使进程在终端关闭后继续运行 /dev/null将标准输出重定向到空设备21将标准错误重定向到标准输出在后台运行进程4.2 检查运行状态要查看 Jupyter 服务是否正常运行可以使用ps aux | grep jupyter如果看到类似下面的输出表示服务正在运行user 12345 0.0 1.2 123456 7890 ? S 12:34 0:00 /usr/bin/python3 /usr/local/bin/jupyter-notebook4.3 停止服务如果需要停止后台运行的 Jupyter 服务首先找到进程IDpgrep -f jupyter然后使用 kill 命令停止服务kill PID5. 高级配置与优化5.1 设置开机自启动如果你希望每次启动 WSL2 时自动运行 Jupyter Notebook可以将其添加到.bashrc文件中echo nohup jupyter notebook /dev/null 21 ~/.bashrc5.2 多用户访问配置如果需要支持多用户访问可以修改以下配置# 允许多个用户同时访问同一个笔记本 c.NotebookApp.allow_root True c.NotebookApp.allow_password_change False5.3 性能优化对于大型项目可以调整以下参数提升性能# 设置最大内存使用量MB c.NotebookApp.mem_limit 4096 # 设置最大线程数 c.NotebookApp.iopub_msg_rate_limit 10006. 常见问题解决方案6.1 无法访问 localhost:8888如果无法通过浏览器访问 Jupyter Notebook尝试以下步骤检查 WSL2 的 IP 地址hostname -I在浏览器中使用 WSL2 的实际 IP 地址访问如http://WSL2_IP:88886.2 密码认证失败如果密码认证失败可以重新生成密码哈希并更新配置文件jupyter notebook password这个命令会交互式地让你输入新密码并自动更新配置文件。6.3 端口冲突如果默认的 8888 端口被占用可以查找占用端口的进程sudo netstat -tulnp | grep 8888终止占用进程或修改 Jupyter 的端口配置7. 安全最佳实践为了确保 Jupyter Notebook 服务的安全性建议遵循以下原则定期更新密码每隔一段时间更换访问密码使用 HTTPS配置 SSL 证书加密通信限制 IP 访问如果只在本地使用可以将c.NotebookApp.ip设置为localhost启用防火墙限制不必要的端口访问配置 SSL 加密的示例# 生成自签名证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem # 修改 Jupyter 配置 c.NotebookApp.certfile /path/to/mycert.pem c.NotebookApp.keyfile /path/to/mykey.key8. 与 Windows 系统集成8.1 创建桌面快捷方式在 Windows 桌面上创建快捷方式直接打开 Jupyter Notebook右键桌面 → 新建 → 快捷方式输入位置http://localhost:8888命名快捷方式为 Jupyter Notebook8.2 使用 Windows Terminal 快速启动在 Windows Terminal 中添加一个专门用于启动 Jupyter 的配置文件{ guid: {随机生成的GUID}, name: Jupyter Notebook, commandline: wsl -e bash -c \nohup jupyter notebook /dev/null 21 \, hidden: false }8.3 文件系统互通WSL2 和 Windows 文件系统可以互相访问在 WSL2 中访问 Windows 文件/mnt/c/在 Windows 中访问 WSL2 文件\\wsl$\Ubuntu\home\username建议将 Jupyter 的工作目录设置为共享位置方便两边编辑c.NotebookApp.notebook_dir /mnt/c/Users/YourName/JupyterNotebooks9. 替代方案与工具推荐9.1 JupyterLabJupyterLab 是 Jupyter Notebook 的下一代界面提供更强大的功能pip install jupyterlab启动方式与 Notebook 类似nohup jupyter lab /dev/null 21 9.2 VS Code 集成VS Code 提供了优秀的 Jupyter 支持安装 Jupyter 扩展打开.ipynb文件即可直接编辑运行可以连接到远程 Jupyter 内核9.3 使用 screen 或 tmux除了nohup还可以使用screen或tmux管理长时间运行的任务sudo apt install tmux tmux new -s jupyter jupyter notebook # 按 CtrlB 然后 D 分离会话要重新连接会话tmux attach -t jupyter10. 性能监控与日志管理10.1 查看运行日志Jupyter Notebook 默认会将日志输出到nohup.out文件tail -f nohup.out10.2 资源监控使用htop监控系统资源使用情况sudo apt install htop htop10.3 内核管理查看正在运行的 Jupyter 内核jupyter kernelspec list删除不再使用的内核jupyter kernelspec remove old_kernel_name11. 自定义主题与扩展11.1 安装主题安装流行的 Jupyter 主题pip install jupyterthemes jt -t onedork -fs 12 -altp -tfs 12 -nfs 12 -cellw 88% -T11.2 常用扩展安装 Jupyter Notebook 扩展pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user启用有用的扩展Table of ContentsVariable InspectorExecuteTime12. 备份与迁移12.1 配置文件备份备份你的 Jupyter 配置cp ~/.jupyter/jupyter_notebook_config.py ~/.jupyter/jupyter_notebook_config.py.bak12.2 笔记本备份定期备份你的笔记本文件tar -czvf notebooks_backup.tar.gz /path/to/your/notebooks12.3 环境迁移使用pip freeze保存 Python 环境pip freeze requirements.txt在新环境中恢复pip install -r requirements.txt经过以上配置你现在拥有了一个稳定、安全、随时可用的 Jupyter Notebook 服务。无论你是关闭终端窗口还是重启电脑只要 WSL2 在运行你的 Jupyter 服务就会持续工作让你可以专注于数据分析与开发而不是环境配置。