Parece que JupyterHub y SELinux no se llevan bien, el síntoma que detecté es que el formulario de login sólo funciona una vez, cuando sales de esa sesión no hay forma de volver a entrar hasta que se reinicia JupyterHub.
La solución del problema la he encontrado en serverfault.com.
El primer paso es cambiar SELinux a "permissive". SELinux sigue activo pero se limita a generar un log con los problemas.
setenforce 0
A continuación intenta acceder a JupyterHub.
Comprueba los errores en audit.log:
sudo grep denied /var/log/audit/audit.log
Obtendrás líneas como la siguiente:
type=AVC msg=audit(1500023853.749:2956): avc: denied { entrypoint } for pid=5441 comm="jupyterhub" path="/usr/sbin/unix_chkpwd" dev="xvda1" ino=200405 scontext=unconfined_u:unconfined_r:unconfined_t:s0 tcontext=system_u:object_r:chkpwd_exec_t:s0 tclass=file
Ejecuta la siguiente línea para crear un módulo local:
sudo grep denied /var/log/audit/audit.log| grep jupyter| audit2allow -M local-module
El módulo se instala con:
sudo semodule -i local-module.pp
Vuelve a cambiar SELinux a "enforcing":
sudo setenforce 1
El problema debería estar resuelto.