【问题标题】:PermissionError: [Errno 13] Permission denied when accessing to aws ec2PermissionError: [Errno 13] 访问 aws ec2 时权限被拒绝
【发布时间】:2019-04-05 10:27:06
【问题描述】:

我在虚拟机上运行 ubuntu 16.04(在 Mac 上),并且在运行 aws ec2 ubuntu 18.04。我正在尝试在aws.ec2 上运行 Jupiter notebook,并尝试通过本地 Ubuntu 上的网络浏览器远程访问它。 我能够访问远程 ubuntu(aws.ec2) 终端。在我按照link 上的步骤操作之后

第 9 步出现以下错误。

我从头开始重新安装了 3 次(包括本地 ubuntu 和 aws ec2 实例),但到目前为止没有任何进展。

Last login: Thu Nov  1 06:34:07 2018 from 134.1****
ubuntu@ip-172-***:~$ export XDG_RUNTIME_DIR=""
ubuntu@ip-172-***:~$ 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。

注意2:尽管在将anaconda安装到EC2之后,python版本降级到3.5.2

一旦我检查了以下目录 /usr/local/lib/ 只有 python3.6 文件夹存在,然后我输入 $sudo chmod 777 dist-packages/

然后$jupyter notebook,然后复制token链接并结合dns,还是不行。

【问题讨论】:

    标签: python amazon-web-services ubuntu amazon-ec2 jupyter-notebook


    【解决方案1】:

    我遇到了同样的问题,现在我只是通过尝试几件事来解决它。试试这些解决方案看看是否有帮助:

    1. /home 文件夹和~/.local/share/jupyter/ 文件夹的所有权更改为运行此命令的当前用户:
       sudo chown -R $USER /home/
    
       sudo chown -R $USER ~/.local/share/jupyter/
    
    1. 如果您遇到 ssl 错误问题,请查看此link

    2. 确保在浏览器中输入 https://&lt;jupyter-server-ip&gt; 而不是 http://

    3. 如果您的 chrome 中出现 Your connection is not private 问题并且无法继续,请尝试 safari 或其他浏览器。这发生在 70 或更高版本的 chrome 中。
    4. 尝试 Leon Huang 的解决方案,为您的实例打开端口 8888。

    【讨论】:

    • 在这方面做得很好。我见过很多人遇到这个问题。所有提出的解决方案都不适合我,但你的。谢谢
    • 我也有同样的问题,试过你的第一个,它工作,然后它来到第二个,现在我有 SSL 错误。 ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee 密钥太小 (_ssl.c:4022)。看来我的错误与其他错误不太相似。我也尝试降低 SSL 级别,但不起作用。有什么建议吗?
    • 我在这里问了一个问题:stackoverflow.com/questions/67753969/…
    • 太棒了!!我遇到了同样的问题,使用第一个命令,一切正常。感谢 novus 的帮助和 hkacmaz 的问题。
    【解决方案2】:

    您设置的端口 8888 必须包含在入站安全组中。本论坛的benai已经解决了:https://forums.fast.ai/t/can-t-connect-to-jupyter-notebook-tried-3-different-machines-err-connection-timed-out/3779

    以下是分步说明: "

    1. 点击左侧面板中的“Instances”(在“Instances”下)。

    2. 选择您的实例(“名称”和“实例ID”左侧的框应变为蓝色,并且页面下方会显示一组信息。此信息将包含标签说“描述”、“状态检查”、“监控”和“标签”)

    3. 如果您单击“描述”,您应该会看到显示的信息。在“安全组”旁边,我看到以下内容以蓝色显示:“launch-wizard-10.查看入站规则”

    4. 点击“查看入站规则”,我看到一个小窗口弹出: 端口协议源 Launch-wizard-10 22 tcp 0.0.0.0/0 这表明只有端口 22 对入站信息开放。

    5. 接下来单击左侧面板中的“安全组”(在“网络和安全”下) 我通过在“描述”下查看具有今天日期的安全组(例如“launch-wizard-10 created 2017-06-29”)来确定列表中的哪些安全组适合我正在运行的实例。

    6. 我在最左侧的复选框中选择了那个(框变成蓝色)。 信息显示在页面下方,包括“描述”、“入站”、“出站”和“标签”标签。 点击“入站”标签。

    7. 就我而言,我只看到:“SSH TCP 22 0.0.0.0/0” 点击“编辑”。 单击“添加规则”,应该会出现一个新行。 在“Port Range”下输入“8888”,在“Source”下选择“Anywhere”,该值应更改为“0.0.0.0/0, ::/0”。 点击“保存”。

    8. 您现在应该会在页面下部看到以下内容: 自定义 TCP 规则 TCP 8888 0.0.0.0/0

    "

    【讨论】:

      【解决方案3】:

      我已经完全按照说明遇到了这个问题,我找到了解决这个问题的方法。

      您需要检查您的证书文件,并检查它是否归根用户所有。

      您只需将所有权更改为正在使用其凭据的 jupyter 用户,笔记本就可以正常工作

      改变

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

      (base) santoshshds@dsserver:~/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

      【讨论】:

        【解决方案4】:

        对我有用的是:

        1. 使用sudo chown -R $USER ~/.local/share/jupyter/ 在上面的答案中更改所有权
        2. 为所选的 Jupyter 端口打开 EC2 入口端口。
        3. 在创建证书文件的同时创建密钥,如示例here 中所示。我之前只添加了证书,它触发了 SSL 错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-17
          • 2016-07-25
          • 2018-11-18
          • 2020-07-01
          • 2016-11-12
          • 2019-11-09
          • 2020-06-06
          • 2021-11-11
          相关资源
          最近更新 更多