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


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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.