如何创建一个不安全的jupyter服务器

Sco*_*ott 2 jupyter jupyter-notebook

Jupyter只允许从localhost访问,除非我做了一堆额外的安全措施.我正在运行我的服务器,因此它只能在本地网络上访问,任何有访问权限的人都可以信任localhost.如何设置没有额外安全功能的jupyter笔记本服务器?

min*_*nrk 9

根据您的问题,我希望您想要这个配置(in ~/.jupyter/jupyter_notebook_config.py):

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs
c.NotebookApp.token = ''     # disable authentication
Run Code Online (Sandbox Code Playgroud)

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

  1. 它只在localhost上侦听.这可以更改为所有公共IP地址:

    c.NotebookApp.ip = '0.0.0.0'
    
    Run Code Online (Sandbox Code Playgroud)

    通常应该通过启用HTTPS和/或密码或令牌身份验证(docs)来监听公共IP .如果它在可信网络上都是内部的,没有任何坏事发生,您可以继续禁用其他安全功能:

  2. 默认情况下启用令牌验证.要禁用它:

    c.NotebookApp.token = ''
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    你可以存储它c.NotebookApp.password.

  3. Jupyter还有CORS保护,以避免其他网站访问此服务器.这意味着当您的网络上的用户访问时~/.jupyter/jupyter_notebook_config.json,该页面上的javascript无法在您的笔记本服务器上执行代码.这听起来像你不要想摸摸这个,但如果你正在运行应该能够访问笔记本电脑服务器的服务,你可以将它添加到:

    {
        "NotebookApp": {
            "password": "sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed"
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 最后,Jupyter 4.3.1引入了一个xsrf令牌,它是处理上述相同类型的跨站点执行的一部分.你并不需要接触这个,如果用户仅直接访问服务器,而不是通过在其他网站的JavaScript.

    c.NotebookApp.allow_origin = 'https://your.other.host'
    
    Run Code Online (Sandbox Code Playgroud)

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

c.NotebookApp.disable_check_xsrf = True
Run Code Online (Sandbox Code Playgroud)

如果您的目标是让计算资源免费供全世界使用,那么这可能是理想的,但他们希望通过笔记本API.

  • 如果我想收听不同的子网(如“ 10.90.104.xxx”和“ 192.168.10.xxx”)怎么办?`c.NotebookApp.ip`的语法是什么? (2认同)