JupyterHub: What is default username and password for JupyterHub?
Ты поставил JupyterHub, запустил его, открыл страницу — и тебя встречает строгое окошко логина. Ты лихорадочно перебираешь в голове `admin/admin`, `root/root`,
Ты поставил JupyterHub, запустил его, открыл страницу — и тебя встречает строгое окошко логина. Ты лихорадочно перебираешь в голове admin/admin, root/root, user/password и все комбинации из своих прошлых проектов. Не подходит. Документация молчит, будто так и надо.
Дело не в тебе. JupyterHub по умолчанию не имеет никакого встроенного пароля. Это не веб-интерфейс роутера. Его концепция — централизованный доступ к Jupyter для многих пользователей, а значит, ему нужна настоящая система аутентификации.
То окно, которое ты видишь, — это лишь шлюз. А куда он ведёт, определяется конфигурацией.
Куда стучится JupyterHub
По умолчанию JupyterHub использует PAM (Pluggable Authentication Module) — систему аутентификации самого Linux-сервера. Он пытается проверить логин и пароль через него, как это делает ssh или sudo.
Поэтому первый и главный вопрос: под учётной записью какого пользователя на самом сервере ты запустил JupyterHub? Потому что войти ты сможешь только под существующими на той машине UNIX-логинами и паролями.
Попробуй ввести whoami в терминале, где запускал хаб. Или загляни в /etc/passwd. Если запускал от root, то теоретически можешь войти как любой пользователь, чей пароль знаешь. Но если запускал от своего юзера ivan, то, скорее всего, только ivan и сможет войти, используя свой системный пароль.
Это не PAM. Что тогда?
Если тебе нужны другие пользователи или ты в контейнере, где нет нормальных системных учёток, PAM не подходит. Тогда нужно смотреть конфиг.
JupyterHub настраивается через jupyterhub_config.py. Ключевая строка там — c.JupyterHub.authenticator_class. Она определяет, кто будет спрашивать пароль.
# По умолчанию — PAM
c.JupyterHub.authenticator_class = 'pam'
Если хочешь простой список пользователей с одним паролем (для теста, конечно же), можно использовать dummy аутентификатор.
c.JupyterHub.authenticator_class = 'dummy'
c.DummyAuthenticator.password = 'mypassword'
После такого введи любой логин и пароль mypassword — и пройдёшь. Но это для стендов, а не для прода.
В продакшене ставят OAuth (через GitHub, Google), LDAP или специальные аутентификаторы вроде oauthenticator.
Порядок действий когда не пускает
Первое — открой логи JupyterHub. Они скажут, какой аутентификатор используется и какие попытки входа были.
# Смотри логи процесса, который запустил jupyterhub
journalctl -u jupyterhub # если как сервис
# или просто смотри вывод в консоли, где он запущен
Второе — найди свой jupyterhub_config.py. Он может быть в текущей директории, в /etc/jupyterhub/ или задан через ключ --config.
Третье — проверь, под кем работает сам хаб. Команда ps aux | grep jupyterhub покажет пользователя.
Четвёртое — если используешь PAM, убедись, что у тебя есть право на аутентификацию. Иногда нужно добавить пользователя, под которым крутится хаб, в группу shadow или похожую.
Итог: не ищи волшебный пароль. Ищи конфиг. JupyterHub — это шлюз, а не хранитель паролей. Он лишь спрашивает у выбранной системы: «Пустить этого?» И если система отвечает «Нет», то и тебя ждёт лишь пустой экран и чувство лёгкой паники, которая знакома каждому, кто работал с аутентификацией.