मैं दूरस्थ Jupyter नोटबुक सर्वर तक क्यों नहीं पहुंच सकता?


94

मैंने अपने सेंटोस 6.5 सर्वर पर एक ज्यूपिटर नोटबुक सर्वर शुरू किया है। और ज्यूपिटर की तरह चल रहा है

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

जब मैं उसी स्थानीय क्षेत्र नेटवर्क में दूरस्थ रूप से ज्यूपिटर का उपयोग करना चाहता हूं, तो कहो http://192.168.1.111:8045/, मैं ज्यूपिटर पेज को बिल्कुल नहीं खोल सकता। वैसे, मैं रिमोट सेंटोस सर्वर को सफलतापूर्वक एक्सेस कर सकता हूं।

संभावित कारण क्या है?

जवाबों:


151

क्या आपने बाहरी कनेक्शन की अनुमति देने के लिए jupyter_notebook_config.py फ़ाइल कॉन्फ़िगर की है ?

डिफ़ॉल्ट रूप से, जुपिटर नोटबुक केवल लोकलहोस्ट से कनेक्शन स्वीकार करता है (उदाहरण के लिए, उसी कंप्यूटर से जो इसके चालू है)। डिफ़ॉल्ट '' से '*' तक NotebookApp.allow_origin विकल्प को संशोधित करके , आप Jupyter को बाहरी रूप से एक्सेस करने की अनुमति देते हैं।

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

आपको उन IP को भी बदलना होगा जो नोटबुक पर सुनेंगे:

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


इस धागे में बाद के उत्तर में विवरण देखें ।

वृहस्पति नोटबुक विन्यास फाइल पर प्रलेखन।


10
अपने साथ ज्यूपिटर का उपयोग करना jupyter notebook --ip 0.0.0.0एक ही परिणाम के साथ रनटाइम पर निर्णय ले सकता है, लेकिन कॉन्फ़िगरेशन फ़ाइल की आवश्यकता के बिना।
14

कोई अन्य अतिरिक्त विचार? मैंने इस प्रश्न पर उपलब्ध हर उत्तर का शाब्दिक प्रयास किया, और उनमें से किसी ने भी मेरे लिए काम नहीं किया। मैंने कॉन्फ़िगरेशन सेट किया है, बाहरी एक्सेस की अनुमति दी है, सभी आईपी और उत्पत्ति की अनुमति दी है ... अभी भी एक कनेक्शन से इनकार कर दिया है। मुझे समझ में नहीं आता कि यह इतना कठिन क्यों है। विंडोज का उपयोग करना वास्तव में मुझे गुस्सा दिलाता है।
लुकास लीमा

73

मैं नीचे दिखाए गए कमांड का उपयोग करके आईपी द्वारा अपने स्थानीय सर्वर तक पहुंचने में कामयाब रहा:

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

xx.xx.xx.xxअपने स्थानीय IP की जयुपर सर्वर द्वारा बदलें ।


27
मैंने इस्तेमाल कियाjupyter notebook --ip 0.0.0.0 --port 8888
तल्हा जुनैद

1
0.0.0.0स्थानीय नेटवर्क ही नहीं, सभी नेटवर्क इंटरफेस पर नोटबुक तक पहुंच को सक्षम करेगा। यदि आप इसे चला रहे हैं और इसे उसी मशीन पर एक्सेस कर रहे हैं, या आप इसके सामने nginx जैसा सर्वर चला रहे हैं, तो आपको इसे 127.0.0.1केवल सीमित करना चाहिए
theferrit32

यदि आप EC2 जैसे क्लाउड इंस्टेंस पर चल रहे हैं, तो सुनिश्चित करें कि आप अपने सुरक्षा समूह को पोर्ट 8888 पर इनबाउंड ट्रैफ़िक की अनुमति देने के लिए संपादित करते हैं।
पागल वैज्ञानिक

@ टियो कोक केन्ग: आप कमांड कहाँ दर्ज करते हैं? शेल प्रॉम्प्ट में?
MSIS

37

James023 ने पहले ही सही उत्तर बता दिया। बस इसे स्वरूपण

यदि आपने jupyter_notebook_config.py फ़ाइल पहले से कॉन्फ़िगर नहीं की है

Step1: इस लाइन को कंसोल में टाइप करके फाइल जेनरेट करें

jupyter notebook --generate-config

Step2: मानों को संपादित करें

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

(कहीं भी निम्नलिखित दो पंक्ति जोड़ें क्योंकि डिफ़ॉल्ट मानों पर वैसे भी टिप्पणी की जाती है)

c.NotebookApp.allow_origin = '*' # सभी मूल

c.NotebookApp.ip = '0.0.0.0' # सभी आईपी पर सुनो

Step3: एक बार जब आप gedit को बंद कर देते हैं, तो आपका पोर्ट ब्लॉक होने की स्थिति में

sudo ufw allow 8888 # अपने tcp को सक्षम करें: 8888 पोर्ट, जो उर डिफॉल्ट ज्यूपिटर पोर्ट है

Step4: एक पासवर्ड सेट करें

jupyter notebook password # यह पासवर्ड के लिए संकेत देगा

चरण 5: ज्यूपिटर शुरू करें

jupyter notebook

और http://xxx.xxx.xxx.xxx:8888/login की तरह कनेक्ट करें ?


एक और चीज़। यदि आप अभी भी समस्याओं का सामना कर रहे हैं, से पहले c.NotebookApp.allow_origin, जोड़ें c=get_config()। उपयोग httpsकरने के बजाय अपने व्यक्तिगत कंप्यूटर में लिंक खोलते समय भी http। तो यह कुछ इस तरह खुल जाएगा http://external_ip_from_GCP_console:8888। का उपयोग httpकरना महत्वपूर्ण है, इसका एक छोटा विवरण और ओवरलैप करना आसान है। उत्तर संकलन के लिए धन्यवाद @ कौशिक। मैंने आपके उत्तर को गलत ठहराया क्योंकि यह मेरे लिए काम करता है।
स्टेटुगुयेर

पासवर्ड कहाँ संग्रहीत है? jupyter_notebook_config.pyचरण 4 पर पासवर्ड सेट करने के बाद इसे खोजने के लिए प्रतीत नहीं हो सकता है
लिआंग

19

RedHat 7 में, हमें बृहस्पति कमांड को चलाने से पहले विशिष्ट पोर्ट की अनुमति देने की आवश्यकता है। कहते हैं बंदरगाह है 8080

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

फिर हम इसे सामान्य रूप से चला सकते हैं। उदाहरण के लिए, उपयोग करना:

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

या जो भी आपको अच्छा लगे।


धन्यवाद, मेरा सिस्टम सेंटोस 7 है, लेकिन ज्यूपिटर को सेवा करने के लिए समस्याएं हैं। पहले मैंने फ़ायरवॉल को अक्षम कर दिया है, लेकिन फिर भी सेवा नहीं कर सकता है, लेकिन विशेष रूप से दूसरी पंक्ति ===> ज्यूपिटर नोटबुक --ip 0.0.0.0 --no-browser --port = 8080-allow-root को लागू करने से समस्या हल हो जाती है। यह अब काम करता है।
RedArrow

निर्दिष्ट के साथ नोटबुक चलाएँ ipऔर portएकदम सही है
वेनमिन वू

इसने मेरे लिए भी, ज्यूपिटरहब के साथ समस्याओं को हल किया। स्टैंडर्ड पोर्ट जुपाइटरहब का उपयोग 127.0.0.1 के बाहर कनेक्शन की अनुमति नहीं देता है
एडुआर्डो पिगनाटेली

साथ ही ec2 उदाहरणों के लिए काम करता है। यह थोड़ा भ्रमित करने वाला कारण है क्योंकि सुरक्षा समूह के पास पोर्ट की अनुमति है लेकिन सर्वर तब तक उपलब्ध नहीं है जब तक आप इन पैरामेट्स के साथ नहीं चलते हैं।
वादिम

10

आपकी कमांड लाइन से, हम देख सकते हैं कि आपका ज्यूपिटर सर्वर सामान्य रूप से चल रहा है। जिस कारण से आप अपने रिमोट ज्यूपिटर सर्वर तक नहीं पहुंच सकते हैं, वह यह है कि आपके रिमोट सेंटोस 6.5 सर्वर के फ़ायरवॉल नियम आपके स्थानीय ब्राउज़र से आने वाले अनुरोध को रोकते हैं, अर्थात अपना tcp ब्लॉक करें। 8045 बंदरगाह।
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
फिर अपने ज्यूपिटर को फिर से एक्सेस करने की कोशिश करें।


हो सकता है कि आपको अपनी jupyter_notebook_config.pyफ़ाइल में उस स्थान को अनलिमिटेड और एडिट करने की आवश्यकता हो :

c.NotebookApp.allow_remote_access = True

और अगर आपके पास एक है तो अपना वीपीएन बंद कर दें ।


8

वैकल्पिक रूप से आप सर्वर पर एक सुरंग बना सकते हैं:

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

फिर बस 127.0.0.1:8888अपने ब्राउज़र में खोलें ।

-i <your_key>यदि आपके पास पहचान_फाइल नहीं है, तो आप भी छोड़ देते हैं।


यदि कोई भिन्न पोर्ट का उपयोग करता है 8888:127.0.0.1:8888, तो पहला 8888स्थानीय मशीन पर पोर्ट है, बाद में एक रिमोट मशीन पर पोर्ट है।
युएन ताउ

4

दूसरा कारण फ़ायरवॉल हो सकता है। हमारे पास भी यही मुद्दा था

jupyter नोटबुक --ip xx.xx.xx.xxx --port xxxx।

फिर यह हमारे नए सेंटो 7 पर एक फ़ायरवॉल बन जाता है।


2

मैं विंडोज 10 पर एनाकोंडा 3 का उपयोग कर रहा हूं। जब आप इसे "एनवायरमेंट वेरिएबल्स में जोड़ें" फ़्लैग करने के लिए रिमेंबर करते हैं।


शर्त: एक नोटबुक कॉन्फ़िगरेशन फ़ाइल

यह देखने के लिए जांचें कि आपके पास नोटबुक कॉन्फ़िगरेशन फ़ाइल है या नहीं jupyter_notebook_config.py। इस फ़ाइल के लिए डिफ़ॉल्ट स्थान आपके Jupyter फ़ोल्डर में आपके घर निर्देशिका में स्थित है:

  • खिड़कियाँ: C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • लिनक्स: /home/USERNAME/.jupyter/jupyter_notebook_config.py

यदि आपके पास पहले से Jupyter फ़ोल्डर नहीं है, या यदि आपके Jupyter फ़ोल्डर में नोटबुक कॉन्फ़िगरेशन फ़ाइल नहीं है, तो निम्न कार्य करें:

$ jupyter notebook --generate-config

यदि यह आवश्यक हो, तो यह कमांड इस फ़ोल्डर में Jupyter फ़ोल्डर बनाएगा, और नोटबुक कॉन्फ़िगरेशन फ़ाइल बनाएगा jupyter_notebook_config.py


डिफ़ॉल्ट रूप से, जुपिटर नोटबुक केवल लोकलहोस्ट से कनेक्शन स्वीकार करता है।

jupyter_notebook_config.pyआने वाले सभी कनेक्शनों को स्वीकार करने के लिए फाइल को निम्नानुसार संपादित करें :

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

आपको उन IP को भी बदलना होगा जो नोटबुक पर सुनेंगे:

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


0

यदि आप कॉनडा पर्यावरण का उपयोग कर रहे हैं, तो आपको फिर से कॉन्फिग फ़ाइल सेट करना चाहिए। और फाइल लोकेशन कुछ इस तरह होगी। Conda में env बनाने के बाद मैंने config फाइल को सेटअप नहीं किया और यह मेरी कनेक्शन समस्या थी।

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


0

मुझे वही समस्या हुई लेकिन मेरे लिए काम के ऊपर कोई भी वर्कअराउंड नहीं है। लेकिन अगर मैं एक ही कॉन्फ़िगरेशन के साथ एक डॉक वर्जन ज्यूपिटर नोटबुक सेट करता हूं, तो यह मेरे लिए काम करता है।

मेरी ज़िम्मेदारी के लिए, यह iptables नियम की समस्याएं हो सकती हैं। कभी-कभी आप बस ufwअपने सर्वर के सभी मार्ग की अनुमति देने के लिए उपयोग कर सकते हैं । लेकिन मेरा केवल iptables -Fसभी नियम को साफ करने के लिए। फिर iptables -L -nदेखें कि क्या काम करता है।

निर्धारित समस्या।


0

निम्नलिखित को jupyter_notebook_config फ़ाइल पर संपादित करें
वास्तविक कंप्यूटर का IP पता दर्ज करें
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

क्लाइंट साइड पर लॉगिन पासवर्ड
ज्यूपिटर नोटबुक पासवर्ड के साथ ज्यूपिटर नोटबुक लॉन्च करें

ब्राउजर पर पासवर्ड लॉगइन करने के बाद पोर्ट के बाद रिमोट सर्वर आईपी एड्रेस टाइप करें। उदाहरण 192.168.1.56:8889


0

नीचे दिए गए चरण करने का प्रयास करें:

निम्नलिखित आदेश पढ़ने / लिखने को ठीक करता है

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

0

मुझे एक समान समस्या का सामना करना पड़ा, और मैंने हल किया कि निम्नलिखित करने के बाद:

  1. अपनी ज्यूपिटर कॉन्फ़िगरेशन फ़ाइल की जाँच करें: यह विवरण में यहाँ वर्णित है; https://testnb.readthedocs.io/en/stable/examples/Notebook/Configuring%20the%20Notebook%20and%20Server.html

- आपको बस ऊपर दिए गए लिंक से यह जानने की आवश्यकता होगी कि ज्यूपिटर सर्वर आपके स्थानीय माचिन आईपी को कैसे सुनता है - आपको यह जानने के लिए ubuntu पर अपने स्थानीय माचिन आईपी (i "ifconfig -a" का उपयोग करना होगा - कृपया सेंटोस 6 की जांच करें

अपना कॉन्फ़िगरेशन सेट करना समाप्त करने के बाद, आप अपने स्थानीय IP पर jupyter नोटबुक चला सकते हैं: jupyter नोटबुक --ip = * =no- ब्राउज़र

कृपया अपने आईपी पते के साथ * उदाहरण के लिए बदलें: jupyter Notebook --ip = 192.168.xx --no-browser

अब आप इस आईपी का उपयोग करते हुए राउटर से जुड़े किसी भी डिवाइस से अपने ज्यूपिटर सर्वर का उपयोग कर सकते हैं: पोर्ट (पोर्ट आमतौर पर 8888 है, इसलिए उदाहरण के लिए मेरे मामले में मैंने "192.168.xx: 8888" का उपयोग अन्य डिवाइसों के लिए अपने सर्वर तक पहुंचने के लिए किया है)

अब यदि आप सार्वजनिक आईपी से इस सर्वर का उपयोग करना चाहते हैं, तो आपको निम्न करना होगा:

  1. अपना सार्वजनिक आईपी खोजें (बस Google पर लिखें कि मेरा आईपी क्या है)
  2. एक ही राउटर से जुड़े किसी भी डिवाइस से सर्वर तक पहुंचने के लिए अपने स्थानीय आईपी के बजाय इस आईपी पते का उपयोग करें कृपया ध्यान दें: यदि आपका लिनक्स सर्वर वर्चुअल मशीन पर चलता है, तो आपको अपने वीबी को सार्वजनिक आईपी से एक्सेस करने की अनुमति देने के लिए अपना राउटर सेट करना होगा, सेटिंग्स राउटर प्रकार पर निर्भर करती हैं। अन्यथा, आपको अपने राउटर से कनेक्ट नहीं किए गए किसी भी डिवाइस से सार्वजनिक आईपी और इसके लिए सेट किए गए पोर्ट का उपयोग करने में सक्षम होना चाहिए, या अपने स्थानीय आईपी और उसी राउटर से जुड़े किसी भी डिवाइस से पोर्ट का उपयोग करना चाहिए!

-1

क्या आपका निजी आईपी पता है? यदि ऐसा है तो आपको अपने सार्वजनिक उपयोग की आवश्यकता होगी। यह क्या है यह जानने के लिए ipchken पर जाएं। मुझे पता है कि आप एक ही लैन में हैं, लेकिन यह देखने की कोशिश करें कि क्या यह किसी भी मुद्दे को हल करता है।


-2

जो भी अभी भी अटका हुआ है - इस पृष्ठ पर दिए गए निर्देशों का पालन करें

मूल रूप से:

  1. AWS द्वारा शुरू में वर्णित चरणों का पालन करें।

    1. SSH को सामान्य रूप से खोलें।
    2. source activate python3
    3. ज्यूपिटर नोटबुक
  2. कुछ भी काटो और चिपकाओ मत। इसके बजाय पहले बंद किए बिना एक नई टर्मिनल विंडो खोलें ।

  3. नई विंडो में उपरोक्त लिंक में वर्णित एसएसएच कमांड दर्ज करें।

  4. एक वेब ब्राउज़र खोलें और http://127.0.0.1:8157 पर जाएं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.