在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
相关推荐
天天喝旺仔6 小时前
Linux 性能排查实战:用 perf、strace 与火焰图定位 CPU、内存与 IO 瓶颈
linux·性能优化·运维开发
LuminousCPP6 小时前
Linux系统编程(二):从目录树到命令执行|路径、环境变量、alias 与文件操作入门
linux·经验分享·笔记
第十人i6 小时前
Linux 系统初始化配置清单:新服务器快速部署
linux·服务器
LongRunning6 小时前
【Linux】RK3568-OpenCV+YOLO(七)
linux
j7~6 小时前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
傲世仙尊7 小时前
设计者的取舍-路径fork的诞生与全局文件队列
linux
逐流人7 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
Tairitsu_H7 小时前
[Linux] 编辑器vim、编译器和动静态链接
linux·vim·gcc·g++·动态链接·静态链接
lzx_0027 小时前
Linux指令(一) 简单了解部分指令
linux
小则又沐风a7 小时前
深入理解TCP协议----滑动窗口,流量控制
linux·网络协议·tcp