在Ubuntu 24.04上设置Jupyter Notebook远程访问的核心步骤:生成配置文件→设置密码→修改核心配置→开放防火墙→启动服务。以下是完整、安全的实现方案,包含两种访问方式(直接远程/SSH隧道)。
一、准备工作(未安装Jupyter时)
-
安装Jupyter Notebook(推荐虚拟环境)
bash# 安装Jupyter pip install jupyter notebook
二、核心配置步骤(远程访问设置)
1. 生成Jupyter配置文件
bash
jupyter notebook --generate-config
# 输出:Writing default config to: /home/[用户名]/.jupyter/jupyter_notebook_config.py
2. 设置访问密码(两种方法)
方法A:使用官方命令(推荐)
bash
jupyter notebook password
# 输入并确认密码,系统会自动生成哈希值保存到配置文件
方法B:手动生成哈希密码(适合自动化)
bash
python3 -c "from notebook.auth import passwd; print(passwd())"
# 复制输出的哈希值(如:argon2:$argon2id$v=19$m=10240,t=10,p=8$...)
3. 修改配置文件(关键)
编辑配置文件:
bash
nano ~/.jupyter/jupyter_notebook_config.py # 或vim
添加/修改以下核心配置(取消注释并修改值):
python
c.NotebookApp.ip = '0.0.0.0' # 允许所有IP访问,替代'*'避免DNS解析问题
c.NotebookApp.port = 8888 # 监听端口(默认8888,可自定义)
c.NotebookApp.open_browser = False # 禁止自动打开浏览器
c.NotebookApp.allow_remote_access = True # 明确允许远程访问
c.NotebookApp.notebook_dir = '/home/[用户名]/notebooks' # 自定义工作目录(可选)
# c.NotebookApp.password = '刚才生成的哈希密码' # 方法B时需要手动添加
4. 配置防火墙(开放端口)
Ubuntu 24.04默认使用ufw防火墙,开放8888端口:
bash
sudo ufw allow 8888/tcp # 开放8888端口
sudo ufw enable # 启用防火墙(如未启用)
sudo ufw status # 验证端口状态
三、启动与访问Jupyter Notebook
1. 直接启动(前台运行)
bash
jupyter notebook
# 或指定端口启动:jupyter notebook --port=8888
2. 远程访问方式
- 方式A:直接远程访问(适合服务器有公网IP)
在本地浏览器输入:http://[服务器IP]:8888,输入设置的密码登录
四、安全提示与常见问题
安全最佳实践
- 强制使用密码:禁用token登录,仅使用强密码访问
- 优先SSH隧道:避免直接暴露端口到公网,降低安全风险
- 定期更新 :
pip install --upgrade jupyter notebook保持版本最新 - 限制IP访问 :生产环境可设置
c.NotebookApp.allow_origin限制特定IP
常见问题解决
- 端口被占用 :修改
c.NotebookApp.port为其他端口(如8889),并更新防火墙规则 - 403 Forbidden错误 :确保
c.NotebookApp.ip设置为0.0.0.0,且allow_remote_access=True - 密码不生效 :删除
~/.jupyter/jupyter_notebook_config.json后重新设置密码 - 无法远程连接:检查服务器防火墙是否开放端口,云服务器需配置安全组规则
五、快速参考命令表
| 操作 | 命令 |
|---|---|
| 生成配置文件 | jupyter notebook --generate-config |
| 设置密码 | jupyter notebook password |
| 启动服务 | jupyter notebook --no-browser --port=8888 |
| 建立SSH隧道 | ssh -L 8888:localhost:8888 user@server_ip |
| 开放防火墙端口 | sudo ufw allow 8888/tcp |