在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
相关推荐
ltl6 小时前
内核追踪:ftrace、kprobe、uprobe、tracepoint 生产实战
linux
·薯条大王6 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
小小、码农9 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
不会就选b9 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
沫璃染墨11 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
AIgorithmGEEK12 小时前
Linux 环境变量完全指南:从入门到理解底层原理
linux·运维·服务器
酷可达拉斯13 小时前
Linux操作系统-升级OpenSSH修复漏洞
linux·运维·服务器·云计算
Molesidy13 小时前
【Linux】基于busybox的根文件系统的完善
linux·服务器·嵌入式linux
jufeng130716 小时前
【系列:MiniKV 原理剖析 · 第 6 篇】
linux·软件工程·个人开发·makefile
IT摆渡者17 小时前
ubuntu系统网络问题
linux·运维·ubuntu