Чому я не можу отримати доступ до віддаленого сервера Jupyter Notebook?


90

Я запустив сервер Jupyter Notebook на своєму сервері centos6.5, і jupyter працює як

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

Коли я хочу отримати віддалений доступ до Jupyter в одній і тій же локальній мережі, скажімо відкрити http://192.168.1.111:8045/, я взагалі не можу відкрити сторінку Jupyter. До речі, я можу успішно отримати доступ до віддаленого сервера centos.

Яка можлива причина?

Відповіді:


143

Ви налаштували файл jupyter_notebook_config.py для дозволу зовнішніх з'єднань?

За замовчуванням Jupyter Notebook приймає підключення лише від localhost (наприклад, з того самого комп'ютера, на якому працює). Змінюючи NotebookApp.allow_origin варіант від значення за замовчуванням «» на «*», ви дозволяєте Jupyter бути доступні ззовні.

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

Вам також потрібно буде змінити IP-адреси, які прослуховуватиме ноутбук:

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


Також див. Деталі у наступній відповіді в цій темі.

Документація у файлі конфігурації Jupyter Notebook.


9
Використовуючи jupyter з jupyter notebook --ip 0.0.0.0вами, ви можете приймати рішення про час роботи з однаковим результатом, але без необхідності в конфігураційному файлі.
janniks

Будь-яка інша додаткова ідея? Я перепробував буквально кожну доступну відповідь на це питання, і жодна з них не спрацювала для мене. Я встановив конфігурації, дозволив зовнішній доступ, дозволив всі IP-адреси та джерела ... все ще отримую відмову в підключенні. Я не розумію, чому це має бути так важко. Використання Windows мене справді дратує.
Лукас Ліма,

72

Мені вдалося отримати доступ до мого локального сервера за допомогою ip, використовуючи команду, показану нижче:

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

замініть xx.xx.xx.xxваш локальний ip сервера jupyter.


26
Я використовувавjupyter notebook --ip 0.0.0.0 --port 8888
Тальха Джунайд

1
0.0.0.0дозволить доступ до ноутбука на всіх мережевих інтерфейсах, а не лише на localhost. Якщо ви запускаєте його та отримуєте доступ до нього на тій самій машині, або перед ним запущений сервер, подібний до nginx, вам слід обмежити його 127.0.0.1лише
theferrit32

Крім того, якщо ви працюєте на екземплярі хмари, як EC2, переконайтеся, що ви відредагували свою групу безпеки, щоб дозволити вхідний трафік через порт 8888.
Mad Scientist

34

James023 вже сказав правильну відповідь. Просто форматуйте його

якщо ви ще не налаштували файл jupyter_notebook_config.py

Крок 1. Створіть файл, набравши цей рядок у консолі

jupyter notebook --generate-config

Крок 2: відредагуйте значення

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

(додайте де-небудь два наступні рядки де завгодно, оскільки значення за замовчуванням все одно коментуються)

c.NotebookApp.allow_origin = '*' # дозволити всі походження

c.NotebookApp.ip = '0.0.0.0' # слухати на всіх IP-адресах

Крок 3: як тільки ви закрили gedit, на випадок, якщо ваш порт заблокований

sudo ufw allow 8888 # увімкніть порт tcp: 8888, який є вашим типовим портом jupyter

Крок 4: встановіть пароль

jupyter notebook password # він запитає пароль

Крок 5: запустіть jupyter

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важливо, його невелика деталь і легко перевертати. Дякую @Koushik за складання відповіді. Я підтримав вашу відповідь, бо вона спрацювала для мене.
StatguyUser

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

або що завгодно.


дякую, моя система Centos 7, але у jupyter є проблеми з обслуговуванням. спочатку я вимкнув брандмауер, але все ще не можу працювати, але особливо застосовуючи другий рядок ===> блокнот jupyter --ip 0.0.0.0 --no-browser --port = 8080 --allow-root вирішити проблему. це працює зараз.
RedArrow

запустити блокнот із зазначеним ipі portідеальним
Веньмін Ву

Це також вирішило для мене проблеми доступу з jupyterhub. Стандартне використання порту jupyterhub не дозволяє з'єднання за межами 127.0.0.1
Едуардо Піньятеллі,

Працює і для екземплярів ec2. Це трохи заплутано, оскільки в групі безпеки дозволено використовувати порт, але сервер недоступний, поки ви не запустите ці параметри.
Вадим

8

Крім того, ви можете просто створити тунель до сервера:

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

Потім просто відкрийте 127.0.0.1:8888у своєму браузері.

Ви також пропускаєте, -i <your_key>якщо у вас немає файлу identity_file.


Якщо один використовує різні порти, 8888:127.0.0.1:8888перший 8888- це порт на локальній машині, пізніше - порт на віддаленій машині.
Юен Тау

ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_portпрацює в моєму випадку. Дякую.
Catbuilts

8

З вашого командного рядка ми бачимо, що ваш сервер jupyter працює нормально. Причиною того, що ви не можете отримати доступ до віддаленого сервера jupyter, є те, що правила брандмауера віддаленого сервера centos6.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.


Можливо, вам також потрібно прокоментувати та відредагувати це місце у вашому jupyter_notebook_config.pyфайлі:

c.NotebookApp.allow_remote_access = True

і навіть вимкніть VPN, якщо у вас є.


4

Іншою причиною може бути брандмауер. У нас була однакова проблема навіть з

ноутбук jupyter --ip xx.xx.xx.xxx --port xxxx.

Тоді це виявляється брандмауер на нашому новому centOS7.


1

Я використовую Anaconda3 у Windows 10. Коли ви встановлюєте його, пам'ятайте прапорець "додати до змінних середовища".


Обов’язкова умова: файл конфігурації ноутбука

Перевірте , щоб побачити , якщо у вас є файл конфігурації ноутбука, jupyter_notebook_config.py. Місцезнаходженням цього файлу за замовчуванням є папка Jupyter, розташована у вашому домашньому каталозі:

  • 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

Якщо у вас ще немає папки Jupyter або якщо папка Jupyter не містить файлу конфігурації блокнота, запустіть таку команду:

$ jupyter notebook --generate-config

Ця команда створить папку Jupyter, якщо потрібно, і створить файл конфігурації блокнота jupyter_notebook_config.pyв цій папці.


За замовчуванням Jupyter Notebook приймає лише підключення від localhost.

Відредагуйте 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 у Conda, і це було моєю проблемою підключення.

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


0

У мене така сама проблема, але жоден із наведених обхідних шляхів не працює для мене. Але якщо я налаштовую док-версію ноутбука jupyter з такою ж конфігурацією, це у мене вийде.

Для мого статусу це можуть бути проблеми, пов'язані з правилами iptables. Іноді ви можете просто використовувати, ufwщоб дозволити весь шлях до вашого сервера. Але моє лише iptables -Fдля того, щоб очистити всі правила. Потім перевірте, iptables -L -nчи працює це.

Виправлено проблему.


0

відредагуйте наступне у файлі jupyter_notebook_config,
введіть фактичну IP-адресу комп'ютера
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

на стороні клієнта запустити ноутбук jupyter з паролем для входу в систему пароль
jupyter notebook

встановивши пароль для входу в браузер, а потім введіть ip-адресу віддаленого сервера, а потім порт. приклад 192.168.1.56:8889


0

Спробуйте виконати наступний крок:

Наступна команда виправляє читання / запис

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

-1

Це ваша приватна IP-адреса? Якщо так, то вам доведеться використовувати свій загальнодоступний. Перейдіть до ipchicken, щоб дізнатись, що це таке. Я знаю, що ви перебуваєте в одній локальній мережі, але спробуйте це, щоб перевірити, чи вирішує це проблеми.


-2

Той, хто все ще застряг - дотримуйтесь інструкцій на цій сторінці .

В основному:

  1. Виконайте кроки, описані спочатку AWS.

    1. Відкрийте SSH як зазвичай.
    2. source activate python3
    3. Блокнот Юпітера
  2. Нічого не вирізуйте і не вклеюйте. Натомість відкрийте нове вікно терміналу, не закриваючи перше.

  3. У новому вікні введіть команду SSH, як описано у посиланні вище.

  4. Відкрийте веб-браузер і перейдіть до http://127.0.0.1:8157

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.