Mengapa saya tidak dapat mengakses server Notebook Jupyter jarak jauh?

90

Saya telah memulai server Notebook Jupyter di server centos6.5 saya. Dan jupyter berjalan seperti

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

Ketika saya ingin mengakses Jupyter dari jarak jauh di jaringan area lokal yang sama, katakan buka http://192.168.1.111:8045/, saya tidak dapat membuka halaman Jupyter sama sekali. Omong-omong, saya berhasil mengakses server centos jarak jauh.

Apa kemungkinan alasannya?

Peng He
sumber

Jawaban:

143

Sudahkah Anda mengkonfigurasi file jupyter_notebook_config.py untuk mengizinkan koneksi eksternal?

Secara default, Notebook Jupyter hanya menerima koneksi dari localhost (misalnya, dari komputer yang sama yang menjalankannya). Dengan mengubah opsi NotebookApp.allow_origin dari default '' menjadi '*', Anda mengizinkan Jupyter untuk diakses secara eksternal.

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

Anda juga harus mengubah IP yang akan didengarkan oleh notebook:

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


Lihat juga detailnya di jawaban selanjutnya di utas ini.

Dokumentasi pada file konfigurasi Notebook Jupyter.

Yakobus023
sumber
9
Menggunakan jupyter dengan jupyter notebook --ip 0.0.0.0Anda dapat memutuskan waktu proses dengan hasil yang sama, tetapi tanpa memerlukan file konfigurasi.
janniks
Ada gagasan tambahan lainnya? Saya benar-benar mencoba setiap jawaban yang tersedia untuk pertanyaan ini, dan tidak ada yang berhasil untuk saya. Saya telah mengatur konfigurasi, mengizinkan akses eksternal, mengizinkan semua IP dan asal ... masih mendapatkan koneksi yang ditolak. Saya tidak mengerti mengapa harus sangat sulit. Menggunakan Windows sangat mengganggu saya.
Lucas Lima
72

Saya berhasil mendapatkan akses server lokal saya dengan ip menggunakan perintah yang ditunjukkan di bawah ini:

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

ganti xx.xx.xx.xxdengan ip lokal Anda dari server jupyter.

Teo Kok Keong
sumber
26
Saya menggunakanjupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid
1
0.0.0.0akan mengaktifkan akses ke notebook di semua antarmuka jaringan, tidak hanya localhost. Jika Anda menjalankan dan mengaksesnya di mesin yang sama, atau Anda menjalankan server seperti nginx di depannya, Anda harus membatasinya 127.0.0.1hanya
theferrit32
Juga jika Anda menjalankan instance cloud seperti EC2, pastikan Anda mengedit grup keamanan Anda untuk mengizinkan lalu lintas masuk pada port 8888.
Mad Scientist
34

James023 sudah menyatakan jawaban yang benar. Hanya memformatnya

jika Anda belum mengkonfigurasi file jupyter_notebook_config.py

Langkah 1: buat file dengan mengetik baris ini di konsol

jupyter notebook --generate-config

Step2: edit nilainya

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

(tambahkan dua baris berikut di mana saja karena nilai default tetap dikomentari)

c.NotebookApp.allow_origin = '*' #allow semua asal

c.NotebookApp.ip = '0.0.0.0' # dengarkan semua IP

Step3: setelah Anda menutup gedit, seandainya port Anda diblokir

sudo ufw allow 8888 # aktifkan port tcp: 8888 Anda, yang merupakan port jupyter default Anda

Step4: setel kata sandi

jupyter notebook password # itu akan meminta kata sandi

Step5: mulai jupyter

jupyter notebook

dan terhubung seperti http://xxx.xxx.xxx.xxx:8888/login ?

Koushik Paul
sumber
Satu hal lagi. Jika Anda masih menghadapi masalah, sebelum c.NotebookApp.allow_origin, tambahkan c=get_config(). Juga saat membuka tautan di komputer pribadi Anda, alih-alih menggunakan httpspenggunaan http. jadi itu akan membuka sesuatu seperti http://external_ip_from_GCP_console:8888. menggunakan httpitu penting, detailnya kecil dan mudah tumpang tindih. Terima kasih @Kik telah menyusun jawabannya. Saya memuji jawaban Anda karena berhasil untuk saya.
StatguyUser
19

Di RedHat 7, kita perlu mengizinkan port tertentu sebelum menjalankan perintah Jupiter. Katakanlah portnya 8080.

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

Lalu kita bisa menjalankannya secara normal. Misalnya, menggunakan:

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

atau apapun yang kamu suka.

Vikas Gupta
sumber
terima kasih, sistem saya adalah Centos 7 tetapi jupyter mengalami masalah untuk melayani. pertama saya telah menonaktifkan firewall tetapi masih tidak dapat melayani tetapi secara khusus menerapkan baris kedua ===> notebook jupyter --ip 0.0.0.0 --no-browser --port = 8080 --allow-root menyelesaikan masalah. itu bekerja sekarang.
RedArrow
menjalankan notebook dengan spesifik ipdan portsempurna
Wenmin Wu
Ini memecahkan masalah akses dengan jupyterhub juga, bagi saya. Port standar yang digunakan jupyterhub tidak mengizinkan koneksi di luar 127.0.0.1
Eduardo Pignatelli
Berfungsi untuk instans ec2 juga. Ini agak membingungkan karena grup keamanan mengizinkan port itu tetapi server tidak tersedia sampai Anda menjalankan parameter ini.
Vadim
8

Atau Anda bisa membuat terowongan ke server:

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

Kemudian buka 127.0.0.1:8888di browser Anda.

Anda juga menghilangkan -i <your_key>if Anda tidak memiliki identity_file.

Yordania
sumber
Jika seseorang menggunakan port yang berbeda 8888:127.0.0.1:8888, yang pertama 8888adalah port pada mesin lokal, yang terakhir adalah port pada mesin jarak jauh.
Yuen Tau
ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_portbekerja dalam kasus saya. Terima kasih.
Catbuilts
7

Dari baris perintah Anda, kami dapat melihat server jupyter Anda berjalan normal. Alasan Anda tidak dapat mengakses server jupyter jarak jauh Anda adalah karena aturan firewall server centos6.5 jarak jauh Anda memblokir permintaan masuk dari browser lokal Anda, yaitu memblokir tcp Anda: Port 8045.
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
lalu coba akses jupyter Anda lagi.


Mungkin Anda juga perlu menghapus komentar dan mengedit tempat itu di jupyter_notebook_config.pyfile Anda :

c.NotebookApp.allow_remote_access = True

dan bahkan matikan VPN Anda jika Anda memilikinya.

Hu Xixi
sumber
4

Alasan lainnya adalah firewall. Kami memiliki masalah yang sama bahkan dengan

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

Kemudian ternyata itu adalah firewall di centOS7 baru kami.

Dhanas chenniappan
sumber
1

Saya menggunakan Anaconda3 pada Windows 10. Ketika Anda menginstalnya, rembember akan menandai "tambahkan ke Variabel Lingkungan".


Prasyarat: File konfigurasi notebook

Periksa untuk melihat apakah Anda memiliki file konfigurasi notebook jupyter_notebook_config.py,. Lokasi default untuk file ini adalah folder Jupyter Anda yang terletak di direktori utama Anda:

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

Jika Anda belum memiliki folder Jupyter, atau jika folder Jupyter Anda tidak berisi file konfigurasi notebook, jalankan perintah berikut:

$ jupyter notebook --generate-config

Perintah ini akan membuat folder Jupyter jika perlu, dan membuat file konfigurasi notebook jupyter_notebook_config.py,, di folder ini.


Secara default, Notebook Jupyter hanya menerima koneksi dari localhost.

Edit jupyter_notebook_config.pyfile sebagai berikut untuk menerima semua koneksi masuk:

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

Anda juga harus mengubah IP yang akan didengarkan oleh notebook:

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

orang gila
sumber
0

jika Anda menggunakan lingkungan Conda, Anda harus menyiapkan file konfigurasi lagi. Dan lokasi file akan menjadi seperti ini. Saya tidak menyiapkan file konfigurasi setelah saya membuat env di Conda dan itu adalah masalah koneksi saya.

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

Jika Anda masih mengalami masalah dan Anda menjalankan sesuatu seperti instans EC2 AWS, itu mungkin hanya kasus membuka port melalui konsol AWS.

lihat jawaban ini

Osilasi Isopycnal
sumber
0

Saya mendapat masalah yang sama tetapi tidak ada solusi di atas yang berhasil untuk saya. Tetapi jika saya menyiapkan notebook jupyter versi buruh pelabuhan, dengan konfigurasi yang sama, itu berhasil untuk saya.

Untuk keadaan saya, itu mungkin masalah aturan iptables. Terkadang Anda mungkin hanya menggunakan ufwuntuk mengizinkan semua rute ke server Anda. Tapi milikku hanya iptables -Funtuk menghapus semua aturan. Kemudian periksa iptables -L -nuntuk melihat apakah berhasil.

Masalah diperbaiki.

James
sumber
0

edit yang berikut pada file jupyter_notebook_config
masukkan alamat IP komputer sebenarnya
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

di sisi klien, luncurkan notebook jupyter dengan kata sandi login, kata sandi
notebook jupyter

setelah setting password login di browser kemudian ketikkan alamat ip server jauh diikuti dengan port. contoh 192.168.1.56:8889

chris mahn
sumber
0

Coba lakukan langkah di bawah ini:

Perintah berikut memperbaiki baca / tulis

    sudo chmod -R a+rw /home/ubuntu/certs/mycert.pem
Pranjal Verma
sumber
-1

Apakah itu alamat IP pribadi Anda? Jika demikian, Anda harus menggunakan yang publik. Buka ipchicken untuk mencari tahu apa itu. Saya tahu Anda berada di LAN yang sama, tetapi coba ini untuk melihat apakah itu menyelesaikan masalah apa pun.

Lucas Buhl-Nielsen
sumber
-2

Siapa pun yang masih terjebak - ikuti petunjuk di halaman ini .

Pada dasarnya:

  1. Ikuti langkah-langkah seperti yang awalnya dijelaskan oleh AWS.

    1. Buka SSH seperti biasa.
    2. source activate python3
    3. Notebook Jupyter
  2. Jangan potong dan tempel apa pun. Sebaliknya, buka jendela terminal baru tanpa menutup yang pertama.

  3. Di jendela baru masukkan perintah SSH seperti yang dijelaskan pada tautan di atas.

  4. Buka browser web dan buka http://127.0.0.1:8157

Sasha Ramirez-Hughes
sumber