Почему я не могу получить доступ к удаленному серверу 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 удаленно в той же локальной сети, скажем open 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.

Джеймс023
источник
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
Talha Junaid
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 нам нужно разрешить конкретный порт перед запуском команды Jupiter. Скажите порт есть 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 notebook --ip 0.0.0.0 --no-browser --port = 8080 --allow-root, решите проблему. теперь работает.
RedArrow 03
запустить блокнот с указанным ipи portидеально
Wenmin Wu
Это также решило проблемы доступа к 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- это порт на локальной машине, второй - это порт на удаленной машине.
Yuen Tau,
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

Madx
источник
0

если вы используете среду Conda, вам следует снова настроить файл конфигурации. И расположение файла будет примерно таким. Я не настраивал файл конфигурации после того, как создал env в Conda, и это была моя проблема с подключением.

C:\Users\syurt\AppData\Local\Continuum\anaconda3\envs\myenv\share\jupyter\jupyter_notebook_config.py
Scyrt
источник
0

Если у вас все еще возникают проблемы и вы используете что-то вроде экземпляра EC2 AWS, это может быть просто случай открытия порта через консоль AWS.

увидеть этот ответ

Изопикнальное колебание
источник
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 notebook с паролем для входа в систему
jupyter notebook password

после установки пароля войдите в систему в браузере, а затем введите 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. Блокнот Jupyter
  2. Ничего не вырезайте и не вставляйте. Вместо этого откройте новое окно терминала, не закрывая первое.

  3. В новом окне введите команду SSH, как описано в приведенной выше ссылке.

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

Саша Рамирес-Хьюз
источник