jupyter-notebook - 如何创建不安全的 jupyter 服务器

标签 jupyter-notebook jupyter

Jupyter 只允许从本地主机访问,除非我做了一堆额外的安全措施。我正在运行我的服务器,以便它只能在本地网络上访问,在该本地网络上,任何有权访问的人都与本地主机具有同等的可信度。如何设置没有额外安全功能的 jupyter notebook 服务器?

最佳答案

根据您的问题,我希望您需要此配置(在 ~/.jupyter/jupyter_notebook_config.py 中):

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs
c.NotebookApp.token = ''     # disable authentication

Jupyter(从 4.3.1 开始)有一些安全特性。我将讨论如何禁用每一个,以及是否/何时禁用它:

  1. 它只在本地主机上监听。这可以更改为所有公共(public) IP 地址:

    c.NotebookApp.ip = '0.0.0.0'
    

    监听公共(public) IP 通常应该启用 HTTPS 和/或密码或 token 身份验证 (docs)。如果它全部位于一个从未发生过任何不良事件的受信任网络上,您可以继续禁用其他安全功能:

  2. 默认启用 token 身份验证。要禁用它:

    c.NotebookApp.token = ''
    

    禁用身份验证意味着任何有权访问主机的人都可以运行代码。看起来这就是你想要的。您也可以enable a password :

    In [1]: from notebook.auth import passwd
    In [2]: passwd()
    Enter password:
    Verify password:
    Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
    

    您可以将其存储在 c.NotebookApp.password 中。

    您还可以将此密码存储在 (~/.jupyter/jupyter_notebook_config.json) 中:

    {
        "NotebookApp": {
            "password": "sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed"
        }
    }
    
  3. Jupyter 也有 CORS保护,以避免其他网站能够访问该服务器。这意味着当您网络上的用户访问 example.com 时,该页面上的 javascript 无法在您的笔记本服务器上执行代码。听起来你不想接触这个,但如果你正在运行一个应该能够访问笔记本服务器的服务,你可以将它添加到:

    c.NotebookApp.allow_origin = 'https://your.other.host'
    
  4. 最后,Jupyter 4.3.1 引入了一个 xsrf token ,它是处理上述相同类别的跨站点执行的一部分。如果用户只是直接访问服务器,而不是通过其他网站上的 javascript,则您不需要触及它。

    c.NotebookApp.disable_check_xsrf = True
    

一个完全不安全的笔记本服务器,也就是说任何网站都可以在上面运行代码,只要浏览器可以连接到它的主机(如果浏览器可以连接到本地主机或局域网)从 LAN 内部运行):

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs
c.NotebookApp.token = ''     # disable authentication
c.NotebookApp.allow_origin = '*' # allow access from anywhere
c.NotebookApp.disable_check_xsrf = True # allow cross-site requests

如果您的目标是通过笔记本 API 让世界免费使用计算资源,这可能是可取的。

关于jupyter-notebook - 如何创建不安全的 jupyter 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233102/

相关文章:

python - Jupyter Notebook 中是否缺少错误突出显示和自动完成功能?

python - jupyter notebook 停止 SSL 错误

linux - 在 Jupyter 笔记本的单元格内执行时,无法使用 "cd"命令更改目录

python - 如何在Jupyter Notebook中做上标和下标?

python - 从 IPython 运行 Flask 引发 SystemExit

docker - 如果采用 8888,则配置 Docker 以动态选择第一个可用的 Jupyter 端口

python - 安装 Anaconda 后不显示 Jupyter notebook 和 Anaconda Navigator

python - Xgboost 适用于 pycharm,但不适用于 Jupyter NoteBook

python - IPython Notebook Tab-Complete -- 显示文档字符串

python - 将变量从 Jupyter notebook 传递到 python 脚本