#python #jupyter-notebook #jupyter
Вопрос:
Я следую инструкциям здесь: https://jupyter-notebook.readthedocs.io/en/stable/public_server.html чтобы сгенерировать хэшированный пароль для копирования в jupyter_notebook_config.py. Однако всякий раз, когда я пытаюсь войти в настоящий ноутбук Jupyter, пароль не работает.
Это код, который я использую:
from notebook.auth import passwd
passwd()
То, что я получаю взамен, — это хэш, который выглядит примерно так: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$xde6DK/DQXdwQw7pviv33A$QEQftsyWij4g7oQqJ54XeQ'
однако все пароли, которые я вижу в примерах, выглядят примерно так: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
Что происходит не так? Также я должен войти в систему с паролем до или после хэша?
Комментарии:
1.
argon2
это гораздо лучший формат хэширования паролей, чем соленый sha. Видишь en.wikipedia.org/wiki/Argon2 для предыстории.2. …и весь смысл хэширования пароля заключается в том, чтобы сервер хранил что-то, что нельзя использовать в качестве самого пароля и из чего пароль нелегко получить; поэтому вы используете исходное значение перед хэшем для входа в систему. Если бы значение после хэша можно было использовать для входа в систему, весь смысл хранения паролей в хэшированной форме был бы проигран.
3. Помимо этого… на самом деле, это вопрос о цепочках зависимостей и сравнении конкретных версий. Если одна версия
notebook.auth
поддерживает argon2, а другая-нет, вы не можете устанавливать хэш, созданный более новой версией, в установке, которая поддерживает только более старый формат; но сейчас вопрос вообще не содержит сведений о версии.4. @CharlesDuffy большое вам спасибо за ваш подробный ответ. Я считаю, что проблема может заключаться в управлении версиями, и именно поэтому оно не работает. Спасибо. Я также заметил, что веб-сайт ввел a
u
перед их хэшем, как здесь:c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
вы знаете, почему они это поместили?5.
u''
является версией строки Юникода Python 2, которая в Python 3 является просто''
. (То, что было''
в Python 2, естьb''
в Python 3).
Ответ №1:
Argon2-более современный и, как правило, более надежный алгоритм хэширования паролей, чем соленый sha1. Таким образом, это разумный выбор для использования текущих версий Jupyter.
Если у вас есть одна установка Jupyter, которая генерирует хэши паролей argon2, и вторая, которая отказывается принимать эти хэши, из этого следует вывод, что между ними существует разница в версиях.
В идеале обновите установку, которая не принимает пароли, для запуска более новой версии программного обеспечения. Если это не вариант, сгенерируйте свой пароль с тем же выпуском, с которым вы должны быть совместимы.