102 votes

Pourquoi je ne parviens pas à accéder au serveur Jupyter Notebook distant ?

J'ai démarré un serveur Jupyter Notebook sur mon serveur centos6.5. Et jupyter fonctionne comme suit

[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] Le Jupyter Notebook est en cours d'exécution à l'adresse : https://[toutes les adresses IP de votre système]:8045/
[I 17:40:59.649 NotebookApp] Utilisez Control-C pour arrêter ce serveur et fermer tous les noyaux (deux fois pour passer la confirmation).

Lorsque je veux accéder à Jupyter à distance dans le même réseau local, disons ouvrir http://192.168.1.111:8045/, je ne peux pas ouvrir du tout une page Jupyter. En revanche, je peux accéder au serveur centos à distance avec succès.

Quelle pourrait être la raison ?

162voto

James023 Points 656

Avez-vous configuré le fichier jupyter_notebook_config.py pour autoriser les connexions externes ?

Par défaut, Jupyter Notebook n'accepte que les connexions depuis localhost (par exemple, depuis le même ordinateur sur lequel il s'exécute). En modifiant l'option NotebookApp.allow_origin de ' ' par défaut à '*', vous permettez à Jupyter d'être accessible de manière externe.

c.NotebookApp.allow_origin = '*' # autoriser toutes les origines

Vous devrez également changer les adresses IP sur lesquelles le notebook écoutera :

c.NotebookApp.ip = '0.0.0.0' # écouter sur toutes les IPs

Voir également les détails dans une réponse ultérieure dans ce fil.

Documentation sur le fichier de configuration de Jupyter Notebook.

16 votes

En utilisant Jupyter avec jupyter notebook --ip 0.0.0.0, vous pouvez décider à l'exécution avec le même résultat, mais sans avoir besoin d'un fichier de configuration.

1 votes

Avez-vous une autre idée supplémentaire? J'ai littéralement essayé toutes les réponses disponibles sur cette question, et aucune d'entre elles n'a fonctionné pour moi. J'ai configuré les paramètres, autorisé les accès externes, autorisé toutes les adresses IP et origines... et je continue à obtenir une connexion refusée. Je ne comprends pas pourquoi cela doit être si difficile. Utiliser Windows m'agace vraiment.

78voto

Teo Kok Keong Points 391

J'ai réussi à accéder à mon serveur local par IP en utilisant la commande ci-dessous :

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

remplacez le xx.xx.xx.xx par votre IP locale du serveur jupyter.

29 votes

J'ai utilisé jupyter notebook --ip 0.0.0.0 --port 8888

1 votes

0.0.0.0 permettra d'accéder au notebook sur toutes les interfaces réseau, pas seulement en local. Si vous l'exécutez et y accédez sur la même machine, ou si vous exécutez un serveur comme nginx devant lui, vous devriez le limiter à 127.0.0.1 seulement.

0 votes

Aussi, si vous utilisez une instance cloud comme EC2, assurez-vous de modifier votre groupe de sécurité pour autoriser le trafic entrant sur le port 8888.

43voto

Koushik Paul Points 182

James023 a déjà donné la réponse correcte. Juste en train de la formater

si vous n'avez pas déjà configuré le fichier jupyter_notebook_config.py

Étape 1: générer le fichier en tapant cette ligne dans la console

jupyter notebook --generate-config

Étape 2: éditer les valeurs

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

(ajoutez les deux lignes suivantes n'importe où car les valeurs par défaut sont commentées de toute façon)

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

c.NotebookApp.ip = '0.0.0.0' # écoute sur toutes les IPs

Étape 3: une fois que vous avez fermé gedit, au cas où votre port est bloqué

sudo ufw allow 8888 # activer votre port tcp:8888, qui est votre port jupyter par défaut

Étape 4: définissez un mot de passe

jupyter notebook password # il demandera un mot de passe

Étape 5: démarrer jupyter

jupyter notebook

et connectez-vous comme http://xxx.xxx.xxx.xxx:8888/login?

0 votes

Une chose de plus. Si vous rencontrez toujours des problèmes, avant le c.NotebookApp.allow_origin, ajoutez c=get_config(). De plus, lors de l'ouverture du lien sur votre ordinateur personnel, au lieu d'utiliser https, utilisez http. ainsi il ouvrira quelque chose comme http://external_ip_from_GCP_console:8888. utiliser http est important, c'est un petit détail et facile à surmonter. Merci @Koushik pour compiler la réponse. J'ai voté pour votre réponse car elle a fonctionné pour moi.

0 votes

Où le mot de passe est-il stocké? je ne semble pas le trouver dans jupyter_notebook_config.py après avoir défini le mot de passe à l'étape 4

0 votes

Fonctionne à merveille! Ubuntu 20.04 sur une machine virtuelle VirtualBox

22voto

Vikas Gupta Points 128

Sous RedHat 7, nous devons autoriser le port spécifique avant d'exécuter la commande Jupiter. Disons que le port est 8080.

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

Ensuite, nous pouvons l'exécuter normalement. Par exemple, en utilisant :

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

ou ce que vous voulez.

0 votes

Merci, mon système est Centos 7 mais jupyter rencontre des problèmes pour servir. J'ai d'abord désactivé le pare-feu mais cela n'a pas résolu le problème. En appliquant spécialement cette deuxième ligne ===> jupyter notebook --ip 0.0.0.0 --no-browser --port=8080 --allow-root, le problème a été résolu. Ça fonctionne maintenant.

0 votes

Exécuter le notebook avec le ip et le port spécifiés est parfait

0 votes

Cela a résolu les problèmes d'accès avec jupyterhub pour moi. Le port standard utilisé par jupyterhub ne permet pas les connexions en dehors de 127.0.0.1.

4voto

L'autre raison peut être un pare-feu. Nous avons eu le même problème même avec

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

Il s'est avéré être un pare-feu sur notre nouveau centOS7.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X