为了更改/设置Jupyter服务器的密码,我遵循以下说明:
http://jupyter-notebook.readthedocs.io/en/latest/public_server.html#preparing-a-hashed-password
我在本地的ipython环境中执行此操作。需要注意的一点是,每次使用相同的密码重新运行passwd()命令时,我都会得到不同的散列,但我认为这是有意为之的行为。
不管怎么说。我得到了散列,然后我在Dockerfile中有这样一行:
ENV PW_HASH="u'sha1:salt:hash'"
在jupyter笔记本的启动脚本中,我有
echo "c.NotebookApp.password = ${PW_HASH}" >> ${CONFIG_PATH}
然后是jupyter notebook --allow-root -y --no-browser --ip=0.0.0.0 --config=${CONFIG_PATH}
但是,如果我随后通过
docker run -it -p 8888:8888 <container-name>
虽然它确实启动了jupyter,并允许我通过localhost:8888在浏览器中连接,但它不接受我刚刚通过它的哈希设置的密码。
奇怪的是,当我添加SSL证书的额外步骤(并转到https://localhost:8888)时,它确实起作用了。这里发生了什么事?
PS:我知道有密码但没有SSL是很粗略的。我只是在一步一步地测试它,想知道为什么没有SSL部分它就不能工作。
发布于 2020-05-19 21:59:51
找到了两种可能的解决方案,我测试了这两种方案,两种方案都有效。
jupyter核心: 4.6.3
jupyter-notebook : 6.0.3
设置密码
“添加选项-e PASSWORD=password以设置环境变量。设置的密码就是jupyter登录的密码。”1当docker run或
environment:
- PASSWORD=password使用Docker Compose时。然后只需输入密码
设置令牌
“在启动Jupyter笔记本Docker容器之一时,已经有一种设置令牌的简单方法:-e JUPYTER_TOKEN="easy; it's already there"。实际上,如果您在本地环境中使用export JUPYTER_TOKEN='easy',然后使用docker run --rm -d --name democontainer -p 9999:8888 -e JUPYTER_TOKEN jupyter/base-notebook (相当于-e JUPYTER_TOKEN=$JUPYTER_TOKEN)启动容器,事情会更简单。然后,您可以使用打开的http://localhost:9999?token=${JUPYTER_TOKEN}自动启动笔记本。H/t @……”2
使用Docker Compose时
environment:
- JUPYTER_TOKEN=easy然后只运行http://localhost:9999?token=easy或自动化更多...
发布于 2018-04-11 20:10:04
使用ipython终端创建散列密码
from notebook.auth import passwd
passwd()它将提示您输入密码两次,并创建散列密码,并在Docker文件中添加以下行
RUN jupyter notebook --generate-config
RUN echo "c.NotebookApp.password='sha1:***'">>/root/.jupyter/jupyter_notebook_config.py由于我是唯一一个使用笔记本的人,所以我只是坚持从根本上来。
https://stackoverflow.com/questions/48875436
复制相似问题