2014-06-30 9 views
5

Ich versuche, ein Ipython-Notebook von meinem Remote-Server (Ubuntu 14.04 64 Bit auf Amazon EC2) zu laufen.Run Ipython Notebook von einem Remote-Server

ich kann Zugriff auf ipython Notebook via SSH-Tunneling wie in coderwall blog beschrieben:

remote$ipython notebook --no-browser --port=8889

local$ssh -N -f -L localhost:8888:localhost:8889 [email protected]_host

Allerdings kann ich nicht haben einen einfachen Zugriff über das HTTP-Protokoll, wie beschrieben in official doc oder tutorial

remote$ipython notebook --no-browser --port=8889

Und verweisen Sie meinen lokalen Browser auf http://mypublicip:8889, der Browser schlägt ohne Warnung fehl.

Antwort

18

dieses Problem zu beheben, musste ich:

  1. der Server auf alle IP-Adressen zu hören Notebook Führen cli Flag Hinzufügen --ip = *:

    remote$ipython notebook --no-browser --ip=* --port=8889

  2. Fügen Sie der amazon ec2-Instanz eine eingehende Regel hinzu, um Port 8889 zu hören. +-----------------+----------+------------+-----------+ | Type | Protocol | Port Range | Source | +=================+==========+============+===========+ | Custom TCP Rule | TCP | 8889 | 0.0.0.0/0 | +-----------------+----------+------------+-----------+

Natürlich jetzt ist es besser Authentifizierung hinzufügen, wie der Port hört alle ip

+0

Escaping der Stern für einige Schalen benötigt wird. –

3

Adressen Als Monkpit unten geschrieben, Shell könnte versuchen * Charakter glob. In diesem Fall sollten Sie --ip=\* schreiben - Explizit IP-Adresse auch das Hinzufügen localhost geholfen:

ipython notebook --no-browser --ip=localhost --port=7777 
+0

Der Grund, warum dies nicht funktioniert, ist, dass die Shell versucht, den Glob '* 'zu erweitern. Ersetze mit '--ip = \ *' um den Glob zu entkommen und du kannst Verbindungen von jeder IP akzeptieren. – Monkpit

+0

Perfekte Antwort! Ändere einfach '--ip = localhost' zu' --ip = yourip' und es sollte gut sein. – Rafay