Hoe accepteer ik verbindingen voor ipython vanaf andere computers?

Ik voer ipython 0.12.1 uit op Ubuntu 12.04. U kunt het in de browser uitvoeren met de notebookinterface door het volgende uit te voeren:

ipython notebook --pylab

Configuratiebestanden zijn te vinden in ~/.config/ipython/profile_default/. Het lijkt erop dat verbindingsparameters voor elke kernel in ~/.config/ipython/profile_default/security/kernel-4e424cf4-ba44-441a-824c-c6bce727e585.jsonworden geplaatst. Hier is de inhoud van dit bestand (nieuwe bestanden worden aangemaakt als je nieuwe kernels start):

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

Het spreekt voor zich, maar hoe kan ik een server instellen die een permanente configuratie heeft, zodat ik de notebookinterface van andere computers in het LAN kan gebruiken?


Antwoord 1, autoriteit 100%

Als u een oude versie van de notebook gebruikt, kan het volgende nog steeds van toepassing zijn. Zie de andere antwoorden hieronder voor nieuwe versies.


Relevante sectie van de IPython-documenten

De Notebook-server luistert standaard op localhost. Als u wilt dat het zichtbaar is voor alle machines op uw LAN, geeft u het gewoon de opdracht om op alle interfaces te luisteren:

ipython notebook --ip='*'

Of een specifiek IP-adres dat zichtbaar is voor andere machines:

ipython notebook --ip=192.168.0.123

Afhankelijk van uw omgeving is het waarschijnlijk een goed idee om HTTPS in te schakelen en een wachtwoordbij het luisteren op externe interfaces.

Als je van plan bent om veel in het openbaar te dienen, is het ook een goed idee om een ​​IPython-profiel te maken (bijv. ipython profile create nbserver) en de configuratie dienovereenkomstig aan te passen, dus alles wat je hoeft te doen is :

ipython notebook --profile nbserver

Om al uw ip/port/ssl/wachtwoord instellingen te laden.


Antwoord 2, autoriteit 18%

Het geaccepteerde antwoord/informatie is voor een oude versie. Hoe activeer je externe toegang tot je nieuwe jupyter-notebook? Ik heb je gedekt

Genereer eerst een configuratiebestand als u dat nog niet heeft:

jupyter notebook --generate-config

Let op de uitvoer van dit commando, aangezien het u zou vertellen waar het bestand jupyter_notebook_config.pyis gegenereerd. Of als je het al hebt, zal het je vragen of je het wilt overschrijven met de standaardconfiguratie. Bewerk de volgende regel:

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

Typ voor extra beveiliging een python/IPython-shell:

from notebook.auth import passwd; passwd()

U wordt gevraagd een wachtwoordreeks in te voeren en te bevestigen. Kopieer de inhoud van de string, die van het type:salt:hashed-password moet zijn. Zoek en bewerk de regels als volgt:

## 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 = '*'

(Her)start je jupyter-notebook, voila!

Other episodes