【问题标题】:ssh AWS, Jupyter Notebook not showing up on web browserssh AWS,Jupyter Notebook 未显示在 Web 浏览器上
【发布时间】:2018-03-16 03:40:02
【问题描述】:

我正在尝试使用 ssh 连接到 AWS“适用于 Amazon Linux 的深度学习 AMI”,除了 Jupyter Notebook 之外一切正常。这是我得到的:

ssh -i ~/.ssh/id_rsa ec2-user@yy.yyy.yyy.yy

给我

Last login: Wed Oct  4 18:01:23 2017 from 67-207-109-187.static.wiline.com

=============================================================================
       __|  __|_  )
       _|  (     /   Deep Learning AMI for Amazon Linux
      ___|\___|___|

The README file for the AMI ➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜➜  /home/ec2-user/src/README.md
Tests for deep learning frameworks ➜➜➜➜➜➜➜➜➜➜➜➜   /home/ec2-user/src/bin
=============================================================================

1 package(s) needed for security, out of 3 available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2017.09 is available.

然后

[ec2-user@ip-xxx-xx-xx-xxx ~]$ jupyter notebook
[I 16:32:14.172 NotebookApp] Writing notebook server cookie secret to /home/ec2-user/.local/share/jupyter/runtime/notebook_cookie_secret
[I 16:32:14.306 NotebookApp] Serving notebooks from local directory: /home/ec2-user
[I 16:32:14.306 NotebookApp] 0 active kernels 
[I 16:32:14.306 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/?token=74e2ad76eee284d70213ba333dedae74bf043cce331257e0
[I 16:32:14.306 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 16:32:14.307 NotebookApp] No web browser found: could not locate runnable browser.
[C 16:32:14.307 NotebookApp] 


Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
    http://localhost:8888/?token=74e2ad76eee284d70213ba333dedae74bf043cce331257e0

复制http://localhost:8888/?token=74e2ad76eee284d70213ba333dedae74bf043cce331257e0并获取

can’t establish a connection to the server at localhost:8888。”在 Firefox 上,

This site can’t be reached localhost refused to connect。”在 Chrome 上

此外, jupyter notebook --ip=yy.yyy.yyy.yy --port=8888给了

Traceback (most recent call last):
  File "/usr/bin/jupyter-notebook", line 11, in <module>
    sys.exit(main())
  File "/usr/lib/python3.4/dist-packages/jupyter_core/application.py", line 267, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/usr/lib/python3.4/dist-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "<decorator-gen-7>", line 2, in initialize
  File "/usr/lib/python3.4/dist-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/lib/python3.4/dist-packages/notebook/notebookapp.py", line 1296, in initialize
    self.init_webapp()
  File "/usr/lib/python3.4/dist-packages/notebook/notebookapp.py", line 1120, in init_webapp
    self.http_server.listen(port, self.ip)
  File "/usr/lib64/python3.4/dist-packages/tornado/tcpserver.py", line 142, in listen
    sockets = bind_sockets(port, address=address)
  File "/usr/lib64/python3.4/dist-packages/tornado/netutil.py", line 197, in bind_sockets
    sock.bind(sockaddr)
OSError: [Errno 99] Cannot assign requested address

请注意,这会有所帮助(仅适用于 MXNet 吗?我不熟悉 MXNet)Jupyter_MXNet

【问题讨论】:

    标签: google-chrome amazon-web-services ssh deep-learning jupyter-notebook


    【解决方案1】:

    嗯,这里发生的事情很少。

    问题 #1 - 本地主机

    1. 正如 Y. Hernandez 所说,您试图错误地访问 URL。您应该将 localhost 替换为您的 AWS VM 的公共 IP 地址(与您使用 ssh 进入的 IP 地址相同)。

    问题 #2 - Jupyter 需要正确配置

    1. 但即便如此,这也可能无法运行,因为 Jupyter 尚未完全开箱即用配置,您正在使用适用于 Amazon Linux 的 Deep Learning AMI。您需要完成以下这些步骤(当然还有很多其他人在做同样的事情——这只是其中一种方式)。

    2. 配置 Jupyter Notebook -

      $ jupyter notebook --generate-config
      
    3. 以 .pem 文件的形式为我们的连接创建认证。

      $ mkdir certs
      $ cd certs
      $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
      
    4. 运行最后一行后,您会被问到一些一般性问题。只需填写#with 一些一般信息或按住回车键。

    5. 接下来我们需要完成对我们之前创建的 Jupyter 配置文件的编辑。所以更改为 .jupyter 文件夹。为此,您可以使用 nano 或 vi 或您喜欢的编辑器。

      $ cd ~/.jupyter/
      
      $ nano jupyter_notebook_config.py
      
    6. 将此代码插入文件顶部 -

    ——插入开始——

    c = get_config()
    
    # Notebook config this is where you saved your pem cert
    c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' 
    # Run on all IP addresses of your instance
    c.NotebookApp.ip = '*'
    # Don't open browser by default
    c.NotebookApp.open_browser = False  
    # Fix port to 8888
    c.NotebookApp.port = 8888
    

    -插入结尾——

    保存文件

    1. cd 出 .jupyter 文件夹

      $ cd
      
    2. 您可以为 Jupyter 或您在任何地方设置一个单独的笔记本文件夹 选择,就可以启动 Jupyter

      $ jupyter notebook
      

    在您的浏览器上,使用您的虚拟机 IP 地址和终端中提供的令牌访问此 url

    http://VM-IPAddress:8888/?token=72385d6d854bb78b9b6e675f171b90afad47b3edcbaa414b

    如果您收到 SSL 错误,则使用 https 而不是 http。

    https://VM-IPAddress:8888/?token=72385d6d854bb78b9b6e675f171b90afad47b3edcbaa414b

    ISSUE #3 - 无法启动 Python 解释器。

    如果您打算运行 Python 2 或 3,则需要升级 iPython。如果没有,一旦启动 Jupyter,您将看不到启动 Python 解释器的选项。您只会看到文本、文件夹和终端的选项。

    1. 升级 iPython。为此,请关闭您的 Jupyter 并运行此升级命令。

      $ sudo pip install ipython --upgrade
      
    2. 重新启动 Jupyter。

    【讨论】:

      【解决方案2】:

      localhost 仅在尝试从机器本身使用 jupyter(或其他任何东西)时才有效。在这种情况下,您似乎正试图从另一台机器访问它。

      您可以使用开关 --ip=abcd 做到这一点,其中 abcd 是您的 EC2 实例的公共地址(或使用 0.0.0.0 让它监听所有接口。)

      您还可以使用 --port=X 定义要监听的特定端口号。

      请记住,您的安全组必须允许从外部访问您选择的 IP/端口。

      例如:

      jupyter notebook --ip=a.b.c.d --port=8888

      【讨论】:

      • @BillAncalagontheblack 您确定该 EC2 实例的 IP 地址是正确的吗?您使用了哪个端口(如果有)?最后一个,因为它可能已经在使用中,因此它不会让你重新绑定它。
      • 谢谢 Y。我在网络浏览器上使用 0.0.0.0 是愚蠢的......其他初学者的快速提醒......:尝试使用 jupyter notebook --ip=0.0.0.0 来制作它侦听所有接口,然后将令牌复制到 Web 浏览器,但将 0.0.0.0 替换为您的 IP 地址(在我上面的示例中,它是 yy.yyy.yyy.yy)。现在它起作用了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2017-10-13
      • 2018-01-22
      • 2017-04-19
      • 2018-06-29
      相关资源
      最近更新 更多