在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
相关推荐
x_lrong1 小时前
Ubuntu下安装配置Claude Code
linux·ubuntu·elasticsearch
say_fall1 小时前
模拟量输入输出技术超详细知识点总结
linux·开发语言·嵌入式硬件·学习·php
济6171 小时前
ROS2 Humble 开发专栏---ROS2 三维视觉应用(1)---RGB-D 相机三维点云数据获取实验---适配Ubuntu 22.04
ubuntu·嵌入式·ros2·机器人开发·机器人方向
2301_789015621 小时前
Linux基础开发工具一:软件包管理器、vim编辑器
linux·服务器·c语言·汇编·c++·编辑器·vim
wx_jiuyun6781 小时前
渔夫Telegram群机器人系统详解
linux·服务器·机器人
开开心心就好1 小时前
新手友好的音视频格式转换工具
linux·服务器·网络·智能手机·pdf·beautifulsoup·音视频
哎呦,帅小伙哦1 小时前
Nanomsg 源码深度剖析:从 protocol.h 内核抽象到 Pair 一对一通信全实现
linux·nanomsg
hanlin031 小时前
基于OpenHarmony 5.0的CAN驱动移植步骤
linux·c语言·华为·can·openharmony·t527
刘国华-平价IT运维课堂1 小时前
Ubuntu 26.04 LTS 发布,研发与运维需要关注什么?
linux·运维·服务器·人工智能·ubuntu