如何创建不安全的 jupyter 服务器
how-to create an insecure jupyter server
Jupyter 只允许从本地主机访问,除非我做了一堆额外的安全措施。我是 运行 我的服务器,因此它只能在本地网络上访问,任何有权访问的人都与 localhost 具有同等的可信度。如何设置没有额外安全功能的 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 开始)有一些安全功能。我将介绍如何禁用每一个,whether/when 禁用它是有意义的:
它只在本地主机上侦听。这可以更改为所有 public 个 IP 地址:
c.NotebookApp.ip = '0.0.0.0'
侦听 public IP 通常应启用 HTTPS and/or 密码或令牌身份验证 (docs)。如果它全部在一个没有发生任何不良事件的可信网络内部,您可以继续禁用其他安全功能:
默认启用令牌身份验证。要禁用它:
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"
}
}
Jupyter 也有 CORS 保护,以避免其他网站能够访问此服务器。这意味着当您网络上的用户访问 example.com
时,该页面上的 javascript 无法在您的笔记本服务器上执行代码。听起来你不想接触这个,但如果你运行宁一个应该能够访问笔记本服务器的服务,你可以将它添加到:
c.NotebookApp.allow_origin = 'https://your.other.host'
最后,Jupyter 4.3.1 引入了一个xsrf token,它是处理上面cross-site执行的同一类别的一部分。如果用户只是直接访问服务器,而不是通过 javascript 在其他网站上访问,您 不需要 触及此。
c.NotebookApp.disable_check_xsrf = True
一个完全不安全的笔记本服务器,也就是说任何网站都可以运行在上面编写代码,只要浏览器可以连接到它的主机(如果浏览器是从 LAN 内部 运行ning,这将包括 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。
Jupyter 只允许从本地主机访问,除非我做了一堆额外的安全措施。我是 运行 我的服务器,因此它只能在本地网络上访问,任何有权访问的人都与 localhost 具有同等的可信度。如何设置没有额外安全功能的 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 开始)有一些安全功能。我将介绍如何禁用每一个,whether/when 禁用它是有意义的:
它只在本地主机上侦听。这可以更改为所有 public 个 IP 地址:
c.NotebookApp.ip = '0.0.0.0'
侦听 public IP 通常应启用 HTTPS and/or 密码或令牌身份验证 (docs)。如果它全部在一个没有发生任何不良事件的可信网络内部,您可以继续禁用其他安全功能:
默认启用令牌身份验证。要禁用它:
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" } }
Jupyter 也有 CORS 保护,以避免其他网站能够访问此服务器。这意味着当您网络上的用户访问
example.com
时,该页面上的 javascript 无法在您的笔记本服务器上执行代码。听起来你不想接触这个,但如果你运行宁一个应该能够访问笔记本服务器的服务,你可以将它添加到:c.NotebookApp.allow_origin = 'https://your.other.host'
最后,Jupyter 4.3.1 引入了一个xsrf token,它是处理上面cross-site执行的同一类别的一部分。如果用户只是直接访问服务器,而不是通过 javascript 在其他网站上访问,您 不需要 触及此。
c.NotebookApp.disable_check_xsrf = True
一个完全不安全的笔记本服务器,也就是说任何网站都可以运行在上面编写代码,只要浏览器可以连接到它的主机(如果浏览器是从 LAN 内部 运行ning,这将包括 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。