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

时间:2017-02-14 17:59:48

标签: jupyter-notebook jupyter

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

1 个答案:

答案 0 :(得分:7)

根据您的问题,我希望您想要此配置(在~/.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. 它只在localhost上侦听。这可以更改为所有公共IP地址:

    c.NotebookApp.ip = '0.0.0.0'
    

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

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

    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

  3. Jupyter还有CORS个保护措施,以避免其他网站访问此服务器。这意味着当您网络上的用户访问example.com时,该网页上的javascript无法在您的笔记本服务器上执行代码。听起来你没有想要触摸它,但是如果你正在运行一个应该能够访问笔记本服务器的服务,你可以将它添加到:

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

    c.NotebookApp.disable_check_xsrf = True
    
  5. 一个完全不安全的笔记本服务器,也就是说任何网站都可以在其上运行代码,只要浏览器可以连接到其主机(如果浏览器,这将包括localhost或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为全世界提供免费的计算资源,那么这可能是理想的。