Perché non riesco ad accedere al server Jupyter Notebook remoto?


94

Ho avviato un server Jupyter Notebook sul mio server centos6.5 e jupyter funziona come

[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).

Quando voglio accedere a Jupyter da remoto nella stessa rete locale, diciamo aperto http://192.168.1.111:8045/, non riesco ad aprire affatto una pagina Jupyter. A proposito, posso accedere con successo al server centos remoto.

Qual è la possibile ragione?

Risposte:


151

Hai configurato il file jupyter_notebook_config.py per consentire connessioni esterne?

Per impostazione predefinita, Jupyter Notebook accetta solo connessioni da localhost (ad esempio, dallo stesso computer su cui è in esecuzione). Modificando l' opzione NotebookApp.allow_origin dal valore predefinito "" a "*", si consente l'accesso esterno a Jupyter.

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

Dovrai anche cambiare gli IP su cui il notebook ascolterà:

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


Vedi anche i dettagli in una risposta successiva in questo thread.

Documentazione sul file di configurazione di Jupyter Notebook.


10
Utilizzando jupyter con jupyter notebook --ip 0.0.0.0puoi decidere il runtime con lo stesso risultato, ma senza la necessità di un file di configurazione.
janniks

Qualche altra idea aggiuntiva? Ho provato letteralmente tutte le risposte disponibili su questa domanda e nessuna di esse ha funzionato per me. Ho impostato le configurazioni, consentito gli accessi esterni, consentito tutti gli IP e le origini ... ancora ottenendo una connessione rifiutata. Non capisco perché deve essere così difficile. Usare Windows mi infastidisce davvero.
Lucas Lima

73

Sono riuscito a ottenere l'accesso al mio server locale tramite ip utilizzando il comando mostrato di seguito:

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

sostituisci il xx.xx.xx.xxcon il tuo ip locale del server jupyter.


27
Ho usatojupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid il

1
0.0.0.0consentirà l'accesso al notebook su tutte le interfacce di rete, non solo localhost. Se lo stai eseguendo e accedendo sulla stessa macchina, o stai eseguendo un server come nginx di fronte ad esso, dovresti limitarlo a 127.0.0.1solo
theferrit32

Inoltre, se stai eseguendo un'istanza cloud come EC2, assicurati di modificare il tuo gruppo di sicurezza per consentire il traffico in entrata sulla porta 8888.
Mad Scientist

@Teo Kok Keong: dove inserisci il comando? Nel prompt della shell?
MSIS

37

James023 ha già indicato la risposta corretta. Basta formattarlo

se non hai già configurato il file jupyter_notebook_config.py

Step1: genera il file digitando questa riga nella console

jupyter notebook --generate-config

Step2: modifica i valori

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

(aggiungi le seguenti due righe ovunque perché i valori predefiniti sono comunque commentati)

c.NotebookApp.allow_origin = '*' # accetta tutte le origini

c.NotebookApp.ip = '0.0.0.0' # ascolta su tutti gli IP

Step3: una volta chiuso gedit, nel caso in cui la tua porta sia bloccata

sudo ufw allow 8888 # abilita la tua porta tcp: 8888, che è la tua porta jupyter predefinita

Step4: imposta una password

jupyter notebook password # richiederà la password

Step5: avvia jupyter

jupyter notebook

e connettersi come http://xxx.xxx.xxx.xxx:8888/login ?


Un'altra cosa. Se stai ancora riscontrando problemi, prima del c.NotebookApp.allow_origin, aggiungi c=get_config(). Anche durante l'apertura del collegamento nel tuo personal computer, invece di usare httpsuse http. quindi aprirà qualcosa di simile http://external_ip_from_GCP_console:8888. l'utilizzo httpè importante, è un piccolo dettaglio e facile da sovrapporre. Grazie @Koushik per aver compilato la risposta. Ho votato positivamente la tua risposta perché ha funzionato per me.
StatguyUser

dove è memorizzata la password? non riesco a trovarlo jupyter_notebook_config.pydopo aver impostato la password al passaggio 4
liang

19

In RedHat 7, dobbiamo consentire la porta specifica prima di eseguire il comando Jupiter. Dì che il porto è 8080.

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

Quindi possiamo eseguirlo normalmente. Ad esempio, utilizzando:

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

o quello che vuoi.


grazie, il mio sistema è Centos 7 ma jupyter ha problemi a servire. prima ho disabilitato il firewall ma non riesco ancora a servire, ma soprattutto applicando la seconda riga ===> jupyter notebook --ip 0.0.0.0 --no-browser --port = 8080 --allow-root risolve il problema. ora funziona.
RedArrow

eseguire il notebook con specificato iped portè perfetto
Wenmin Wu

Questo ha risolto anche i problemi di accesso con jupyterhub, per me. La porta standard utilizzata da jupyterhub non consente connessioni esterne 127.0.0.1
Eduardo Pignatelli

Funziona anche per le istanze ec2. È un po 'confuso perché il gruppo di sicurezza ha quella porta consentita ma il server non è disponibile finché non esegui con questi parametri.
Vadim

10

Dalla tua riga di comando, possiamo vedere che il tuo server jupyter sta funzionando normalmente. Porta 8045.
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
quindi prova ad accedere di nuovo al tuo jupyter.


Forse devi anche rimuovere il commento e modificare quella posizione nel tuo jupyter_notebook_config.pyfile:

c.NotebookApp.allow_remote_access = True

e spegni anche la tua VPN, se ne hai una.


8

In alternativa puoi semplicemente creare un tunnel al server:

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

Quindi aprilo 127.0.0.1:8888nel tuo browser.

Ometti anche il -i <your_key>se non hai un identity_file.


Nel caso in cui si utilizzino porte diverse 8888:127.0.0.1:8888, la prima 8888è la porta sulla macchina locale, l'ultima è la porta sulla macchina remota.
Yuen Tau

4

L'altro motivo può essere un firewall. Abbiamo avuto lo stesso problema anche con

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

Quindi risulta essere un firewall sul nostro nuovo centOS7.


2

Sto usando Anaconda3 su Windows 10. Quando lo installi ricorda di contrassegnare "aggiungi a variabili di ambiente".


Prerequisito: un file di configurazione del notebook

Verificare se si dispone di un file di configurazione notebook, jupyter_notebook_config.py. La posizione predefinita per questo file è la cartella Jupyter situata nella directory home:

  • Finestre: 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

Se non disponi già di una cartella Jupyter o se la cartella Jupyter non contiene un file di configurazione del notebook, esegui il seguente comando:

$ jupyter notebook --generate-config

Questo comando creerà la cartella Jupyter, se necessario, e creerà il file di configurazione del notebook,, jupyter_notebook_config.pyin questa cartella.


Per impostazione predefinita, Jupyter Notebook accetta solo connessioni da localhost.

Modificare il jupyter_notebook_config.pyfile come segue per accettare tutte le connessioni in entrata:

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

Dovrai anche cambiare gli IP su cui il notebook ascolterà:

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


0

se stai usando l'ambiente Conda, dovresti impostare di nuovo il file di configurazione. E il percorso del file sarà qualcosa del genere. Non ho impostato il file di configurazione dopo aver creato env in Conda e questo era il mio problema di connessione.

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


0

Ho lo stesso problema ma nessuna delle soluzioni alternative sopra funziona per me. Ma se installo un notebook jupyter in versione docker, con la stessa configurazione, per me funziona.

Per la mia costituzione, potrebbero essere problemi con le regole di iptables. A volte potresti semplicemente usare ufwper consentire tutto il percorso al tuo server. Ma il mio solo iptables -Fper cancellare ogni regola. Quindi controlla iptables -L -nper vedere se funziona.

Problema risolto.


0

modificare quanto segue sul file jupyter_notebook_config
inserire l'indirizzo IP del computer effettivo
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

sul lato client avviare il notebook jupyter con password di accesso password del
notebook jupyter

dopo aver impostato la password accedere al browser e quindi digitare l'indirizzo ip del server remoto seguito dalla porta. esempio 192.168.1.56:8889


0

Prova a eseguire il passaggio seguente:

Il seguente comando risolve la lettura / scrittura

    sudo chmod -R a+rw /home/ubuntu/certs/mycert.pem

0

Ho riscontrato un problema simile e l'ho risolto dopo aver eseguito le seguenti operazioni:

  1. controlla il tuo file di configurazione jupyter: questo è descritto qui in dettaglio; https://testnb.readthedocs.io/en/stable/examples/Notebook/Configuring%20the%20Notebook%20and%20Server.html

- ti servirà semplicemente dal link sopra per imparare come fare in modo che il server jupyter ascolti il ​​tuo IP machin locale - dovrai conoscere il tuo IP machin locale (io uso "ifconfig -a" su ubuntu per scoprirlo) - si prega di verificare la presenza di centos6

dopo aver finito di impostare la configurazione, puoi eseguire jupyter notebook sul tuo IP locale: jupyter notebook --ip = * --no-browser

si prega di sostituire * con il proprio indirizzo IP, ad esempio: jupyter notebook --ip = 192.168.xx --no-browser

ora puoi accedere al tuo server jupyter da qualsiasi dispositivo connesso al router utilizzando questa porta ip: (la porta è solitamente 8888, quindi per il mio caso ad esempio ho usato "192.168.xx: 8888" per accedere al mio server da altri dispositivi)

ora se vuoi accedere a questo server da IP pubblico, dovrai:

  1. trova il tuo IP pubblico (digita semplicemente su google qual è il mio IP)
  2. usa questo indirizzo IP al posto del tuo IP locale per accedere al server da qualsiasi dispositivo non connesso allo stesso router nota gentile: se il tuo server linux gira su macchina virtuale, dovrai impostare il tuo router per consentire l'accesso al tuo VB da IP pubblici, le impostazioni dipendono dal tipo di router. altrimenti, dovresti essere in grado di accedere al server utilizzando l'IP pubblico e la porta impostata per esso da qualsiasi dispositivo non connesso al tuo router, oppure utilizzando il tuo IP locale e la porta impostata da qualsiasi dispositivo connesso allo stesso router!

-1

Quello è il tuo indirizzo IP privato? In tal caso, dovrai utilizzare quello pubblico. Vai su ipchicken per scoprire di cosa si tratta. So che sei nella stessa LAN, ma prova questo per vedere se risolve eventuali problemi.


-2

Chiunque sia ancora bloccato, segui le istruzioni in questa pagina .

Fondamentalmente:

  1. Segui i passaggi inizialmente descritti da AWS.

    1. Apri SSH normalmente.
    2. source activate python3
    3. Jupyter Notebook
  2. Non tagliare e incollare nulla. Apri invece una nuova finestra di terminale senza chiudere la prima.

  3. Nella nuova finestra inserisci il comando SSH come descritto nel link sopra.

  4. Apri un browser web e vai a http://127.0.0.1:8157

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.