Errors
JupyterHub

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 — это шлюз, а не хранитель паролей. Он лишь спрашивает у выбранной системы: «Пустить этого?» И если система отвечает «Нет», то и тебя ждёт лишь пустой экран и чувство лёгкой паники, которая знакома каждому, кто работал с аутентификацией.