web-dev-qa-db-fra.com

Comment accepter les connexions pour ipython à partir d'autres ordinateurs?

J'exécute ipython 0.12.1 sur Ubuntu 12.04. Vous pouvez l'exécuter dans le navigateur à l'aide de l'interface du bloc-notes en exécutant:

ipython notebook --pylab

Les fichiers de configuration se trouvent dans ~/.config/ipython/profile_default/. Il semble que les paramètres de connexion pour chaque noyau soient placés dans ~/.config/ipython/profile_default/security/kernel-4e424cf4-ba44-441a-824c-c6bce727e585.json. Voici le contenu de ce fichier (de nouveaux fichiers sont créés lorsque vous démarrez de nouveaux noyaux):

{
  "stdin_port": 54204, 
  "ip": "127.0.0.1", 
  "hb_port": 58090, 
  "key": "2a105dd9-26c5-40c6-901f-a72254d59876", 
  "Shell_port": 52155, 
  "iopub_port": 42228
}

C'est assez explicite, mais comment puis-je définir un serveur qui aurait une configuration permanente, afin que je puisse utiliser l'interface de bloc-notes à partir d'autres ordinateurs du réseau local?

53
enedene

Si vous utilisez une ancienne version du bloc-notes, les éléments suivants peuvent toujours s'appliquer. Pour les nouvelles versions, voir les autres réponses ci-dessous.


Section pertinente des documents IPython

Le serveur Notebook écoute par défaut sur localhost. Si vous souhaitez qu'il soit visible par toutes les machines de votre réseau local, demandez-lui simplement d'écouter sur toutes les interfaces:

ipython notebook --ip='*'

Ou une IP spécifique visible par les autres machines:

ipython notebook --ip=192.168.0.123

Selon votre environnement, c'est probablement une bonne idée de activer HTTPS et un mot de passe lors de l'écoute sur des interfaces externes.

Si vous prévoyez de servir publiquement beaucoup, c'est également une bonne idée de créer un profil IPython (par exemple ipython profile create nbserver) et modifiez la configuration en conséquence, donc tout ce que vous avez à faire est de:

ipython notebook --profile nbserver

Pour charger tous vos paramètres ip/port/ssl/mot de passe.

113
minrk

La réponse/information acceptée est pour une ancienne version. Comment activer l'accès à distance à votre nouveau notebook jupyter? Je t'ai couvert

Tout d'abord, générez un fichier de configuration si vous ne l'avez pas déjà:

jupyter notebook --generate-config

Remarquez la sortie de cette commande car elle vous indiquerait où le jupyter_notebook_config.py le fichier a été généré. Ou si vous l'avez déjà, il vous demandera si vous souhaitez l'écraser avec la configuration par défaut. Modifiez la ligne suivante:

## The IP address the notebook server will listen on.
c.NotebookApp.ip = '0.0.0.0' # Any ip

Pour plus de sécurité, saisissez un shell python/IPython:

from notebook.auth import passwd; passwd()

Il vous sera demandé de saisir et de confirmer une chaîne de mot de passe. Copiez le contenu de la chaîne, qui doit être du type de formulaire: sel: mot de passe haché. Recherchez et modifiez les lignes comme suit:

## Hashed password to use for web authentication.
#  
#  To generate, type in a python/IPython Shell:
#  
#    from notebook.auth import passwd; passwd()
#  
#  The string should be of the form type:salt:hashed-password.
c.NotebookApp.password = 'type:salt:the-hashed-password-you-have-generated'

## Forces users to use a password for the Notebook server. This is useful in a
#  multi user environment, for instance when everybody in the LAN can access each
#  other's machine through ssh.
#  
#  In such a case, server the notebook server on localhost is not secure since
#  any user can connect to the notebook server via ssh.
c.NotebookApp.password_required = True

## Set the Access-Control-Allow-Origin header
#  
#  Use '*' to allow any Origin to access your server.
#  
#  Takes precedence over allow_Origin_pat.
c.NotebookApp.allow_Origin = '*'

(Re) lancez votre cahier jupyter, le tour est joué!

16
cenk