PermissionError: [Errno 13] В доступе отказано при доступе к aws ec2

У меня Ubuntu 16.04 работает на виртуальном ящике (на Mac), а на aws ec2 работает ubuntu 18.04. Я пытаюсь запустить блокнот Jupiter на aws.ec2 и пытаюсь получить к нему удаленный доступ через свой веб-браузер в моем локальном Ubuntu. Я могу получить доступ к удаленному терминалу ubuntu (aws.ec2). После того, как я выполнил шаги на этом ссылка

На шаге 9 я получил следующую ошибку.

Я переустанавливал все с нуля 3 раза (включая локальный экземпляр ubuntu и aws ec2), но пока никакого прогресса.

Last login: Thu Nov  1 06:34:07 2018 from 134.1****
[email protected]***:~$ export XDG_RUNTIME_DIR=""
[email protected]***:~$ jupyter notebook
[I 06:40:19.525 NotebookApp] Serving notebooks from local directory: /home/ubuntu
[I 06:40:19.528 NotebookApp] The Jupyter Notebook is running at:
[I 06:40:19.528 NotebookApp] https:// **** :8888/?token=727fbb120d19f55a435c1*****
[I 06:40:19.528 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:40:19.529 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        https://(ip-172-31-***** .0.1):8888/?token=727fbb120d19f55a435c14*********
ERROR:asyncio:Exception in callback BaseAsyncIOLoop._handle_events(4, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(4, 1)>
Traceback (most recent call last):
  File "/usr/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/platform/asyncio.py", line 122, in _handle_events
    handler_func(fileobj, events)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 262, in accept_handler
    callback(connection, address)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/tcpserver.py", line 263, in _handle_connection
    do_handshake_on_connect=False)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 565, in ssl_wrap_socket
    context = ssl_options_to_context(ssl_options)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 540, in ssl_options_to_context
    context.load_cert_chain(ssl_options['certfile'], ssl_options.get('keyfile', None))
PermissionError: [Errno 13] Permission denied
ERROR:asyncio:Exception in callback BaseAsyncIOLoop._handle_events(4, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(4, 1)>
Traceback (most recent call last):
  File "/usr/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/platform/asyncio.py", line 122, in _handle_events
    handler_func(fileobj, events)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 262, in accept_handler
    callback(connection, address)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/tcpserver.py", line 263, in _handle_connection
    do_handshake_on_connect=False)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 565, in ssl_wrap_socket
    context = ssl_options_to_context(ssl_options)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tornado/netutil.py", line 540, in ssl_options_to_context
    context.load_cert_chain(ssl_options['certfile'], ssl_options.get('keyfile', None))
PermissionError: [Errno 13] Permission denied

Примечание 1: на экземпляре ec2 Ubuntu имеет версию 18.04 и поставляется с python 3.6.3, тогда мне нужно установить anaconda поверх него, а затем версия python теперь 3.5.2, как только я набрал $ python3.

См. также:  Не удается подключиться к localhost с помощью cURL в командной строке

Примечание 2: несмотря на то, что после того, как анаконда была установлена ​​в EC2, версия python упала до 3.5.2.

как только я проверил следующий каталог / usr / local / lib / там существует только папка python3.6, я набрал $ sudo chmod 777 dist-packages /

затем записную книжку $ jupyter, затем скопируйте ссылку на токен и объедините с DNS, но все равно не сработало.

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 4
  1. hkacmaz

    Установленный вами порт 8888 должен быть включен во входящие группы безопасности. Benai решил эту проблему на этом форуме: https://forums.fast.ai/t/can-t-connect-to-jupyter-notebook-tried-3-different-machines-err-connection-timed-out/3779

    Вот пошаговая инструкция: «

    1. Щелкните «Экземпляры» (в разделе «Экземпляры») на левой боковой панели.

    2. Выберите свой экземпляр (поле слева от «Имя» и «Идентификатор экземпляра» должно стать синим, а набор информации будет отображаться в нижней части страницы. Эта информация будет включать теги «Описание», «Статус» Проверки »,« Мониторинг »и« Теги »)

    3. Если вы нажмете «Описание», вы должны увидеть отображаемую информацию. Рядом с «Группы безопасности» я вижу синим цветом следующее: «launch-wizard-10. просмотреть правила для входящих подключений »

    4. Нажмите «просмотреть правила для входящих подключений», и я вижу небольшое всплывающее окно с сообщением: Ports Protocol Source Launch-wizard-10 22 tcp 0.0.0.0/0 Это означает, что только порт 22 открыт для входящей информации.

    5. Затем нажмите «Группы безопасности» (в разделе «Сеть и безопасность») на левой панели. Я определил, какая из групп безопасности в списке соответствует моему работающему экземпляру, просмотрев под «Описание», чтобы увидеть группу с сегодняшней датой. (например, «запуск-мастер-10 создан 2017-06-29»).

    6. Я выбрал его в крайнем левом поле флажка (поле стало синим). Информация появилась в нижней части страницы, включая теги «Описание», «Входящее», «Исходящее» и «Теги». Щелкните по тегу «Входящие».

    7. В моем случае я видел только: «SSH TCP 22 0.0.0.0/0». Нажмите «Изменить». Нажмите «Добавить правило», и должна появиться новая строка. Введите «8888» в «Диапазон портов» и в «Источник» выберите «Anywhere», который должен изменить значение на «0.0.0.0/0, :: / 0». Щелкните «Сохранить».

    8. Теперь вы должны увидеть следующее в нижней части страницы: Пользовательское правило TCP TCP 8888 0.0.0.0/0

    «

  2. hkacmaz

    Я столкнулся с этой проблемой точно так, как было сказано, и нашел решение этой проблемы.

    вам нужно проверить файл сертификата и проверить, принадлежит ли он корню.

    вам просто нужно сменить владельца на пользователя jupyter, чьи учетные данные используются, и ноутбук будет работать нормально

    изменение с

    (base) [email protected]:~/certs$ ls -lrth
    total 4.0K
    -rw------- 1 root root 2.0K May  5 10:02 mycert.pem
    

    to

    (base) [email protected]:~/certs$ ls -lrth
    total 4.0K
    -rw------- 1 santoshshds root 2.0K May  5 10:02 mycert.pem
    

    и теперь jupyter работает нормально

    ####################################################################
    [I 06:58:40.180 NotebookApp] https://(dsserver or 127.0.0.1):8888/
    
    [I 06:58:40.180 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    
    [W 06:58:45.487 NotebookApp] error on read: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:2488)
    
    [W 06:58:45.499 NotebookApp] error on read: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:2488)
    
    [W 06:58:45.750 NotebookApp] error on read: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:2488)
    
    [I 06:58:54.468 NotebookApp] 302 GET / (x.x.x.x) 0.63ms
    
    [I 06:58:54.785 NotebookApp] 302 GET /tree? (x.x.x.x) 0.81ms
    
    [W 07:14:58.719 NotebookApp] Not allowing login redirect to '/tree?'
    
    [I 07:14:58.720 NotebookApp] 302 POST /login?next=%2Ftree%3F (x.x.x.x) 1.62ms
    
    [I 07:14:59.047 NotebookApp] 302 GET / (x.x.x.x) 0.65ms
    

    где (x.x.x.x) — IP-адрес браузера

  3. hkacmaz

    У меня была такая же проблема, и теперь я решил ее, попробовав пару вещей. Попробуйте эти решения, чтобы узнать, помогает ли это:

    1. Сменил владельца папки /home и папки ~/.local/share/jupyter/ на текущего пользователя, выполняющего эту команду:
       sudo chown -R $USER /home/
    
       sudo chown -R $USER ~/.local/share/jupyter/
    
    1. Если вы столкнулись с ошибкой ssl, просмотрите эту ссылку.

    2. Убедитесь, что вы набираете в браузере https://<jupyter-server-ip> вместо https://.

    3. Если у вас Your connection is not private проблема в Chrome и вы не можете продолжить, попробуйте Safari или другие браузеры. Это происходит в Chrome с версией 70 или новее.
    4. Попробуйте решение Леона Хуанга, чтобы включить порт 8888 для вашего экземпляра.

    отличная работа над этим. Я видел много людей, сталкивающихся с этой проблемой. Все предложенные решения у меня не работали, а у вас -. Спасибо person hkacmaz; 06.06.2020

    У меня такая же проблема, попробовал ваш номер один, он сработал, затем пришел к номеру 2, теперь у меня ошибка SSL. ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ключ слишком мал (_ssl.c: 4022). похоже, что моя ошибка не совсем похожа на другие. Я тоже попытался снизить уровень SSL, но не сработало. любое предложение? person hkacmaz; 29.05.2021

    я задал вопрос здесь: stackoverflow.com/questions/67753969/ person hkacmaz; 29.05.2021

  4. hkacmaz

    Что сработало для меня, так это:

    1. Измените владельца, как в ответе выше, с помощью sudo chown -R $USER ~/.local/share/jupyter/
    2. Откройте входной порт EC2 для выбранного порта Jupyter.
    3. Наряду с созданием файла сертификата для создания ключа, как в примере здесь. Раньше я только добавлял сертификат, и это приводило к ошибкам SSL.
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: