在Ubuntu 24.04上设置Jupyter Notebook远程访问

在Ubuntu 24.04上设置Jupyter Notebook远程访问的核心步骤:生成配置文件→设置密码→修改核心配置→开放防火墙→启动服务。以下是完整、安全的实现方案,包含两种访问方式(直接远程/SSH隧道)。


一、准备工作(未安装Jupyter时)

  1. 安装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,输入设置的密码登录

四、安全提示与常见问题

安全最佳实践
  1. 强制使用密码:禁用token登录,仅使用强密码访问
  2. 优先SSH隧道:避免直接暴露端口到公网,降低安全风险
  3. 定期更新 :pip install --upgrade jupyter notebook 保持版本最新
  4. 限制IP访问 :生产环境可设置c.NotebookApp.allow_origin限制特定IP
常见问题解决
  1. 端口被占用 :修改c.NotebookApp.port为其他端口(如8889),并更新防火墙规则
  2. 403 Forbidden错误 :确保c.NotebookApp.ip设置为0.0.0.0,且allow_remote_access=True
  3. 密码不生效 :删除~/.jupyter/jupyter_notebook_config.json后重新设置密码
  4. 无法远程连接:检查服务器防火墙是否开放端口,云服务器需配置安全组规则

五、快速参考命令表

操作 命令
生成配置文件 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
相关推荐
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
丰锋ff4 小时前
压缩命令笔记
linux
GeW6 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by209996 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
cq林志炫7 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
无人生还别怕8 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
企鹅侠客9 小时前
Linux CPU 负载平均值(Load Average)详解:从原理到实践
linux·运维·服务器·服务器负载
易点云徐源9 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
第404号工位9 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构
就像楞次定律9 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(1)
linux·后端