Чому я не можу отримати доступ до віддаленого сервера 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.