Jupyter 只允许从本地主机访问,除非我做了一些额外的安全工作。我正在运行我的服务器,以便它只能在本地网络上访问,任何有权访问的人都与本地主机具有相同的可信度。如何设置没有额外安全功能的 jupyter 笔记本服务器?
根据您的问题,我希望您需要此配置(在~/.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)。我将介绍如何禁用每个选项,以及是否/何时禁用它有意义:
-
它仅在本地主机上侦听。可以将其更改为所有公共 IP 地址:
c.NotebookApp.ip = '0.0.0.0'
监听公共 IP 通常应启用 HTTPS 和/或密码或令牌身份验证(docs https://jupyter-notebook.readthedocs.io/en/latest/public_server.html)。如果这一切都在受信任的网络内部,没有发生任何不好的事情,您可以继续禁用其他安全功能:
-
默认情况下启用令牌身份验证。要禁用它:
c.NotebookApp.token = ''
禁用身份验证意味着有权访问主机的任何人都可以运行代码。看来这就是你想要的。你也可以启用密码 https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#preparing-a-hashed-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 https://en.wikipedia.org/wiki/Cross-origin_resource_sharing保护,以避免其他网站能够访问该服务器。这意味着当您网络上的用户访问example.com
,该页面上的 javascript 无法在您的笔记本服务器上执行代码。听起来像你don't想要触及这个,但如果您正在运行一个应该能够访问笔记本服务器的服务,您可以将其添加到:
c.NotebookApp.allow_origin = 'https://your.other.host'
-
最后,Jupyter 4.3.1 引入了 xsrf 令牌,它是处理上述同一类别跨站点执行的一部分。你don't如果用户仅直接访问服务器,而不是通过其他网站上的 JavaScript,则需要触摸此选项。
c.NotebookApp.disable_check_xsrf = True
A 完全没有安全感笔记本服务器,也就是说任何网站都可以在其上运行代码,只要浏览器可以连接到其主机(如果浏览器从 LAN 内部运行,则包括本地主机或 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 让全世界免费使用计算资源,那么这可能是理想的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)