Не удается подключиться к ноутбуку Jupyter на экземпляре AWS EC2

Я запускаю Ubuntu 14.04 LTS на экземпляре AWS EC2. Я пытаюсь подключиться к Jypter в Safari с моего MacBookPro. Я открыл https-порт 443 и TCP 8888 в моей группе безопасности.

[email protected]:~$ netstat -a  | grep 8888
tcp        0      0 localhost:8888          *:*                     LISTEN     
tcp        0      0 localhost:8888          localhost:36190         TIME_WAIT  
[email protected]:~$ netstat -a  | grep 443
unix  3      [ ]         STREAM     CONNECTED     12443    
[email protected]:~$ 

Я не могу подключиться к Jupyter из браузера Safari на своем Mac. (Я могу подключиться к Tensorboard на порту 6006).

[email protected]:~$ jupyter notebook
[W 20:40:14.909 NotebookApp] Unrecognized JSON config file version, assuming version 1
[I 20:40:14.921 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 20:40:15.224 NotebookApp] JupyterLab alpha preview extension loaded from /home/ubuntu/anaconda/lib/python2.7/site-packages/jupyterlab
[I 20:40:15.230 NotebookApp] Serving notebooks from local directory: /home/ubuntu
[I 20:40:15.230 NotebookApp] 0 active kernels 
[I 20:40:15.230 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/?token=c08a71a48c6e159bdbdcc95837c4e2e053349382c681899b
[I 20:40:15.231 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 20:40:15.232 NotebookApp] 

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

введите описание изображения здесь

$ telnet 52.8.16.250 8888
Trying 52.8.16.250...
telnet: connect to address 52.8.16.250: Connection refused
telnet: Unable to connect to remote host
$ telnet 52.8.16.250 6006
Trying 52.8.16.250...
telnet: connect to address 52.8.16.250: Connection refused
telnet: Unable to connect to remote host
$ telnet 52.8.16.250 8080
Trying 52.8.16.250...
telnet: connect to address 52.8.16.250: Connection refused
telnet: Unable to connect to remote host
$ telnet ec2-52-8-16-250.us-west-1.compute.amazonaws.com 8888
Trying 52.8.16.250...
telnet: connect to address 52.8.16.250: Connection refused
telnet: Unable to connect to remote host
$ telnet ec2-52-8-16-250.us-west-1.compute.amazonaws.com 20
Trying 52.8.16.250...

telnet: connect to address 52.8.16.250: Operation timed out
telnet: Unable to connect to remote host

Ответ 1

Для меня SSH туннелирование отлично подходит для таких случаев.

ssh -i /path/to/your/AWS/key/file -NL 8157:localhost:8888 [email protected]

где пользователь и хост зависят от вашего экземпляра ec2.

После этого вы можете перейти к http://localhost:8157/

Ответ 2

Хорошо, нашел проблему:

Отредактируйте конфигурацию jupyter:

jupyter notebook --generate-config

vim /home/ubuntu/.jupyter/jupyter_notebook_config.py

Убедитесь, что

c.NotebookApp.ip = '*'

Также убедитесь, что вы открыли соответствующую группу безопасности на своем сервере EC2 (например, порт 8888)

Запустить Jupyter:

jupyter notebook

Теперь вы можете получить доступ к нему удаленно с помощью правильного порта

Ответ 3

Убедитесь, что ваша группа безопасности экземпляра AWS настроена, как показано ниже: настроена группа безопасности входящего экземпляра aws

Если вы уверены, что AWS правильно настроен для разрешений, проверьте, не блокирует ли ваша сеть исходящий трафик. Вы можете попытаться выполнить туннелирование портов при SSHing в ваш экземпляр, выполнив:

ssh -i -L 8888: 127.0.0.1: 8888

тогда вы можете получить доступ к jupyter локально, перейдя на localhost: 8888 в вашем браузере