要更改/设置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容器 docker run -it -p 8888:8888 <container-name>
虽然它启动jupyter并允许我通过localhost:8888
在我的浏览器中连接,但它不会接受我刚刚通过其哈希设置的密码。
奇怪的是,当我添加SSL证书的附加步骤(并转到https://localhost:8888)时,它确实有效。这是怎么回事?
PS:我知道拥有密码但没有SSL是粗略的。我只是一步一步地测试它,并想知道为什么没有SSL部分它将无法工作。
答案 0 :(得分:4)
找到了两种可能的解决方案,我对两者都进行了测试。
jupyter核心:4.6.3
jupyter笔记本: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 @minrk ...“ [2 ]
使用Docker Compose时
environment:
- JUPYTER_TOKEN=easy
然后只运行http://localhost:9999?token=easy
或自动化更多...
[1] login password required to access jupyter notebook running in nvidia-docker container
答案 1 :(得分:2)
使用ipython终端创建哈希密码
from notebook.auth import passwd
passwd()
它会促使你输入passwd两次,并创建哈希密码, 并在Docker文件中添加以下行
RUN jupyter notebook --generate-config
RUN echo "c.NotebookApp.password='sha1:***'">>/root/.jupyter/jupyter_notebook_config.py
由于我是唯一一个使用笔记本电脑的人,所以我只是坚持使用笔记本电脑。