¿Por qué no puedo acceder al servidor Jupyter Notebook remoto?

90

He iniciado un servidor Jupyter Notebook en mi servidor centos6.5 y jupyter se ejecuta como

[I 17:40:59.649 NotebookApp] Serving notebooks from local directory: /root
[I 17:40:59.649 NotebookApp] 0 active kernels 
[I 17:40:59.649 NotebookApp] The Jupyter Notebook is running at:https://[all ip addresses on your system]:8045/
[I 17:40:59.649 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Cuando quiero acceder a Jupyter de forma remota en la misma red de área local, diga abrir http://192.168.1.111:8045/, no puedo abrir una página de Jupyter en absoluto. Por cierto, puedo acceder al servidor centos remoto con éxito.

¿Cuál es la posible razón?

Peng He
fuente

Respuestas:

143

¿Ha configurado el archivo jupyter_notebook_config.py para permitir conexiones externas?

De forma predeterminada, Jupyter Notebook solo acepta conexiones desde localhost (por ejemplo, desde la misma computadora en la que se está ejecutando). Al modificar la opción NotebookApp.allow_origin del valor predeterminado '' a '*', permite que se acceda a Jupyter externamente.

c.NotebookApp.allow_origin = '*' #allow all origins

También deberá cambiar las direcciones IP en las que escuchará el portátil:

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs


También vea los detalles en una respuesta posterior en este hilo.

Documentación sobre el archivo de configuración de Jupyter Notebook.

James023
fuente
9
Al usar jupyter con jupyter notebook --ip 0.0.0.0, puede decidir el tiempo de ejecución con el mismo resultado, pero sin la necesidad de un archivo de configuración.
Janniks
¿Alguna otra idea adicional? Probé literalmente todas las respuestas disponibles sobre esta pregunta, y ninguna funcionó para mí. Establecí las configuraciones, permití accesos externos, permití todas las direcciones IP y orígenes ... aún obteniendo una conexión rechazada. No entiendo por qué tiene que ser tan difícil. Usar Windows realmente me molesta.
Lucas Lima
72

Logré obtener acceso a mi servidor local por ip usando el comando que se muestra a continuación:

jupyter notebook --ip xx.xx.xx.xx --port 8888

reemplace el xx.xx.xx.xxpor su ip local del servidor jupyter.

Teo Kok Keong
fuente
26
Solíajupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid
1
0.0.0.0permitirá el acceso al portátil en todas las interfaces de red, no solo en el host local. Si lo está ejecutando y accediendo a él en la misma máquina, o si está ejecutando un servidor como nginx frente a él, debe limitarlo 127.0.0.1solo a
theferrit32
Además, si está ejecutando una instancia en la nube como EC2, asegúrese de editar su grupo de seguridad para permitir el tráfico entrante en el puerto 8888.
Mad Scientist
34

James023 ya indicó la respuesta correcta. Solo formateándolo

si aún no ha configurado el archivo jupyter_notebook_config.py

Paso 1: genere el archivo escribiendo esta línea en la consola

jupyter notebook --generate-config

Paso 2: editar los valores

gedit  /home/koushik/.jupyter/jupyter_notebook_config.py

(agregue las siguientes dos líneas en cualquier lugar porque los valores predeterminados se comentan de todos modos)

c.NotebookApp.allow_origin = '*' #permitir todos los orígenes

c.NotebookApp.ip = '0.0.0.0' # escuchar en todas las IP

Paso 3: una vez que hayas cerrado el gedit, en caso de que tu puerto esté bloqueado

sudo ufw allow 8888 # habilite su puerto tcp: 8888, que es su puerto jupyter predeterminado

Paso 4: establezca una contraseña

jupyter notebook password # le pedirá la contraseña

Paso 5: inicie jupyter

jupyter notebook

y conectarse como http://xxx.xxx.xxx.xxx:8888/login ?

Koushik Paul
fuente
Una cosa más. Si aún tiene problemas, antes de c.NotebookApp.allow_origin, agregue c=get_config(). También al abrir el enlace en su computadora personal, en lugar de usar httpsuse http. por lo que abrirá algo como http://external_ip_from_GCP_console:8888. el uso httpes importante, es un pequeño detalle y fácil de superponer. Gracias @Koushik por compilar la respuesta. Elegí tu respuesta porque funcionó para mí.
StatguyUser
19

En RedHat 7, debemos permitir el puerto específico antes de ejecutar el comando de Jupiter. Digamos que el puerto es 8080.

iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT

Entonces podemos ejecutarlo normalmente. Por ejemplo, usando:

jupyter notebook --ip 0.0.0.0 --no-browser --port=8080 --allow-root

o lo que quieras.

Vikas Gupta
fuente
gracias, mi sistema es Centos 7 pero jupyter tiene problemas para servir. primero he desactivado el firewall pero todavía no puedo servir, pero especialmente aplicando la segunda línea ===> jupyter notebook --ip 0.0.0.0 --no-browser --port = 8080 --allow-root resuelve el problema. ahora funciona.
RedArrow
ejecutar cuaderno con especificado ipy portes perfecto
Wenmin Wu
Esto también resolvió los problemas de acceso con jupyterhub, para mí. El puerto estándar que utiliza jupyterhub no permite conexiones fuera de 127.0.0.1
Eduardo Pignatelli
También funciona para instancias ec2. Es un poco confuso porque el grupo de seguridad tiene ese puerto permitido, pero el servidor no está disponible hasta que ejecute estos parámetros.
Vadim
8

Alternativamente, puede simplemente crear un túnel al servidor:

ssh -i <your_key> <user@server-instance> -L 8888:127.0.0.1:8888

Luego, simplemente ábralo 127.0.0.1:8888en su navegador.

También omite -i <your_key>si no tiene un archivo_identidad.

Jordán
fuente
En caso de que uno use puertos diferentes 8888:127.0.0.1:8888, el primero 8888es el puerto de la máquina local, el último es el puerto de la máquina remota.
Yuen Tau
ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_portfunciona en mi caso. Gracias.
Catbuilts
7

Desde su línea de comando, podemos ver que su servidor jupyter se está ejecutando normalmente. La razón por la que no puede acceder a su servidor jupyter remoto es que las reglas de firewall de su servidor centos6.5 remoto bloquean la solicitud entrante de su navegador local, es decir, bloquean su tcp: Puerto 8045.
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
luego intente acceder a su jupyter nuevamente.


Quizás también necesite descomentar y editar ese lugar en su jupyter_notebook_config.pyarchivo:

c.NotebookApp.allow_remote_access = True

e incluso apague su VPN si tiene una.

Hu Xixi
fuente
4

La otra razón puede ser un firewall. Tuvimos el mismo problema incluso con

cuaderno jupyter --ip xx.xx.xx.xxx --port xxxx.

Entonces resulta ser un firewall en nuestro nuevo centOS7.

Dhanas chenniappan
fuente
1

Estoy usando Anaconda3 en Windows 10. Cuando lo instale, recuerde marcar "agregar a variables de entorno".


Requisito previo: un archivo de configuración de portátil

Comprobar para ver si tiene un archivo de configuración portátil, jupyter_notebook_config.py. La ubicación predeterminada para este archivo es su carpeta Jupyter ubicada en su directorio de inicio:

  • Ventanas: C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

Si aún no tiene una carpeta de Jupyter, o si su carpeta de Jupyter no contiene un archivo de configuración de notebook, ejecute el siguiente comando:

PS jupyter notebook --generate-config

Este comando creará la carpeta Jupyter si es necesario, y creará el archivo de configuración del cuaderno jupyter_notebook_config.py, en esta carpeta.


De forma predeterminada, Jupyter Notebook solo acepta conexiones desde localhost.

Edite el jupyter_notebook_config.pyarchivo de la siguiente manera para aceptar todas las conexiones entrantes:

c.NotebookApp.allow_origin = '*' #allow all origins

También deberá cambiar las direcciones IP en las que escuchará el portátil:

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs

madx
fuente
0

si está utilizando el entorno Conda, debe volver a configurar el archivo de configuración. Y la ubicación del archivo será algo como esto. No configuré el archivo de configuración después de crear env en Conda y ese fue mi problema de conexión.

C:\Users\syurt\AppData\Local\Continuum\anaconda3\envs\myenv\share\jupyter\jupyter_notebook_config.py
scyrt
fuente
0

Si todavía tiene problemas y está ejecutando algo como una instancia EC2 de AWS, puede ser solo un caso de abrir el puerto a través de la consola de AWS.

mira esta respuesta

Oscilación isopicnal
fuente
0

Tengo el mismo problema, pero ninguna de las soluciones anteriores funciona para mí. Pero si configuro una computadora portátil jupyter de la versión Docker, con la misma configuración, me funciona.

Para mi situación, podrían ser problemas con las reglas de iptables. A veces puede usar ufwpara permitir todas las rutas a su servidor. Pero el mío solo iptables -Fpara borrar todas las reglas. Entonces revisaiptables -L -n si funciona.

Problema fijo.

James
fuente
0

edite lo siguiente en el archivo jupyter_notebook_config
ingrese la dirección IP real de la computadora
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

en el lado del cliente, inicie el cuaderno jupyter con contraseña de inicio de sesión contraseña del
cuaderno jupyter

después de configurar la contraseña, inicie sesión en el navegador y luego escriba la dirección IP del servidor remoto seguida del puerto. ejemplo 192.168.1.56:8889

chris mahn
fuente
0

Intente hacer el siguiente paso:

El siguiente comando corrige la lectura / escritura

    sudo chmod -R a+rw /home/ubuntu/certs/mycert.pem
Pranjal Verma
fuente
-1

¿Es esa su dirección IP privada? Si es así, necesitará usar su público. Vaya a ipchicken para averiguar qué es. Sé que está en la misma LAN, pero intente esto para ver si resuelve algún problema.

Lucas Buhl-Nielsen
fuente
-2

Cualquiera que todavía esté atascado, siga las instrucciones de esta página .

Básicamente:

  1. Siga los pasos descritos inicialmente por AWS.

    1. Abra SSH como de costumbre.
    2. source activate python3
    3. Cuaderno Jupyter
  2. No cortes ni pegues nada. En su lugar, abra una nueva ventana de terminal sin cerrar la primera.

  3. En la nueva ventana ingrese ingrese el comando SSH como se describe en el enlace anterior.

  4. Abra un navegador web y vaya a http://127.0.0.1:8157

Sasha Ramírez-Hughes
fuente