当前位置: 首页 > news >正文

如何远程访问在WSL运行的Jupyter Notebook

远程访问在 WSL 中运行的 Jupyter Notebook 是一个非常常见的需求,比如你想用你的笔记本电脑或者平板来访问你台式机上运行的计算任务。

这比在本地访问要多几个步骤,主要是因为需要进行网络配置和安全设置。

我们将分为两大部分:

  1. 在局域网内远程访问 (例如,在同一个 WiFi 下的另一台电脑或平板访问)。
  2. (进阶)从外网访问 (通过互联网从任何地方访问,较专业)。

Part 1: 在局域网内远程访问

默认情况下,Jupyter 为了安全,只允许从本机(localhost)访问。要实现远程访问,我们需要做三件事:

  1. 让 Jupyter 监听所有网络接口的请求,而不仅仅是 localhost
  2. 设置一个密码,而不是使用一次性的 token,这样更安全也更方便。
  3. 配置 Windows 防火墙,允许外部设备访问 WSL 的端口。
步骤一:生成 Jupyter 配置文件

如果你还没有配置文件,需要先生成一个。在你的 WSL Ubuntu 终端中(确保你已经激活了虚拟环境 source venv/bin/activate),运行:

jupyter notebook --generate-config

这会在你的 home 目录下的 .jupyter 文件夹中创建一个名为 jupyter_notebook_config.py 的文件。路径是 ~/.jupyter/jupyter_notebook_config.py

步骤二:设置访问密码

为了安全,我们不应该把一个带 token 的链接暴露在网络中。设置一个固定的密码是最好的方式。

激活了虚拟环境的终端中运行:

jupyter notebook password

系统会提示你输入并确认密码。这个命令会生成一个加密后的密码,并保存在 ~/.jupyter/jupyter_server_config.json 文件中。Jupyter 启动时会自动读取这个密码。

步骤三:修改配置文件

现在,我们需要编辑第一步生成的配置文件,让 Jupyter 监听公网 IP。

  1. 用一个终端编辑器(如 nano)打开配置文件:

    nano ~/.jupyter/jupyter_notebook_config.py
    
  2. 在文件中找到(可以使用 Ctrl + W 搜索)以下几行,取消它们的注释(删除行首的 # 号)并修改它们的值:

    # 找到这一行:
    # c.NotebookApp.ip = 'localhost'
    # 修改为 '0.0.0.0',表示监听所有 IPv4 地址
    c.NotebookApp.ip = '0.0.0.0'# (可选,但推荐) 阻止Jupyter在启动时自动打开浏览器
    # 因为在WSL中它也打不开图形界面浏览器
    # 找到这一行:
    # c.NotebookApp.open_browser = True
    # 修改为 False
    c.NotebookApp.open_browser = False# (可选) 如果你不想使用默认的 8888 端口,可以修改这里
    # c.NotebookApp.port = 8888
    
  3. 修改完成后,按 Ctrl + X,然后按 Y 保存,最后按 Enter 确认文件名退出 nano

步骤四:配置 Windows 防火墙

这是最关键的一步,因为 WSL 的网络流量需要通过 Windows 主机。你需要告诉 Windows 防火墙,允许外部设备访问你为 Jupyter 设置的端口(默认为 8888)。

  1. Windows 中(不是 WSL),打开 “开始” 菜单,搜索 “高级安全的 Windows Defender 防火墙” (Windows Defender Firewall with Advanced Security) 并打开它。

  2. 在左侧面板中,点击 “入站规则” (Inbound Rules)。

  3. 在右侧面板中,点击 “新建规则…” (New Rule…)。

  4. 规则类型: 选择 “端口” (Port),点击 “下一步”。

  5. 协议和端口: 选择 “TCP”,然后在 “特定本地端口” (Specific local ports) 中输入 8888 (或者你自定义的端口号),点击 “下一步”。

  6. 操作: 选择 “允许连接” (Allow the connection),点击 “下一步”。

  7. 配置文件:

    • 私有 (Private): 必须勾选,这适用于你的家庭或工作局域网。
    • 公用 (Public): 不要勾选,除非你明确知道你在公共网络(如咖啡店的WiFi)上需要这样做,这有安全风险。
    • 域 (Domain): 如果你的电脑在公司域中,可以勾选。
    • 通常只勾选 “私有” 即可。点击 “下一步”。
  8. 名称: 给规则起一个容易识别的名字,比如 Jupyter WSL Port,然后点击 “完成”。

步骤五:启动 Jupyter 并从远程设备访问
  1. 获取 Windows 主机的 IP 地址:

    • Windows 中打开命令提示符 (cmd) 或 PowerShell。
    • 运行 ipconfig
    • 在输出中找到你当前连接的网络(比如 “无线局域网适配器 WLAN” 或 “以太网适配器 Ethernet”),记下它的 “IPv4 地址”,例如 192.168.1.105
  2. 在 WSL 中启动 Jupyter:
    回到你的 WSL 终端(确保虚拟环境已激活),像往常一样启动 Jupyter:

    jupyter notebook
    

    或者启动 JupyterLab:

    jupyter lab
    

    因为你修改了配置,它现在会监听来自局域网的请求。

  3. 从远程设备访问:
    在你的另一台电脑、笔记本或平板的浏览器中,输入以下地址:
    http://<你Windows主机的IP地址>:8888

    例如:http://192.168.1.105:8888

    浏览器会打开 Jupyter 的登录页面,输入你在 步骤二 中设置的密码即可访问。


Part 2: (进阶) 从外网访问

⚠️ 极大的安全警告: 将 Jupyter Notebook 直接暴露在公网上有很大的安全风险。任何人都有可能尝试破解你的密码。请确保你设置了极其复杂的密码,并考虑使用 SSH 隧道等更安全的方法。

如果你仍然想这样做,你需要进行端口转发 (Port Forwarding) 设置。

  1. 完成 Part 1 的所有步骤

  2. 登录你的路由器管理界面。通常是在浏览器访问 192.168.1.1192.168.0.1

  3. 在路由器设置中找到 “端口转发”、“虚拟服务器” 或 “Port Forwarding” 等选项。

  4. 添加一条新的转发规则:

    • 外部端口 (External Port): 你希望从外网访问的端口,比如 8888
    • 内部端口 (Internal Port): 8888 (与 Jupyter 监听的端口一致)。
    • 内部 IP 地址 (Internal IP Address): 填写你 Windows 主机的局域网 IP 地址 (例如 192.168.1.105)。
    • 协议 (Protocol): TCP
    • 保存规则。
  5. 获取你的公网 IP 地址。在浏览器中访问 whatismyip.com 或直接搜索 “my ip”。

  6. 现在,你可以从任何地方,通过 http://<你的公网IP地址>:8888 来访问你的 Jupyter Notebook了。

更安全的替代方案: 使用 SSH 隧道是比直接端口转发安全得多的方法。它会将远程端口安全地映射到你的本地机器上,所有流量都经过加密。这需要你在 Windows 上开启 SSH 服务器,配置稍微复杂一些,但安全性大大提高。

http://www.dtcms.com/a/272758.html

相关文章:

  • 如何安装python以及jupyter notebook
  • 创客匠人洞察:AI 时代创始人 IP 打造如何突破效率与价值的平衡
  • RabbitMQ 高级特性之消息分发
  • 【Fargo】发送一个rtp包的过程1:怎么统一加twcc序号
  • 华锐云空间展销编辑器:开启数字化展示新时代​
  • U-Boot 2025.07 引入的 “uthreads” 优势介绍
  • 什么是主链
  • 【会员专享数据】2013-2024年我国省市县三级逐月SO₂数值数据(Shp/Excel格式)
  • 使用EasyExcel动态合并单元格(模板方法)
  • RK3568项目(八)--linux驱动开发之基础外设(上)
  • 亚马逊运营中出单词反查
  • 机器学习:反向神经元传播公式推导
  • 记录今天学习Comfyui的感受
  • python正则表达式(小白五分钟从入门到精通)
  • 智能化时代下的门店运营:AI的深刻影响
  • 2025年第十五届APMCM亚太地区大学生数学建模竞赛(中文赛项)
  • 【C++】红黑树的底层思想 and 大厂面试常问
  • BootStrap
  • 售前:该站高位思考还是站低位思考
  • Codeforces Round 1034 (Div. 3) G题题解记录
  • 创建本地软件仓库(rhel7与rhel9)
  • HighReport报表工具开始支持BS报表设计器
  • SW-CA(多平台产品上架系统)
  • uni-app 途径站点组件开发与实现分享
  • 体积超过2MB?uniapp小程序分包上传
  • [论文阅读]Text Compression for Efficient Language Generation
  • Go语言包管理完全指南:从基础到最佳实践
  • BM12 单链表的排序
  • 东土科技智能塔机系统亮相南京,助力智能建造高质量发展
  • HOOK专题