从远程服务器运行ipython笔记本

5

我正在尝试从我的远程服务器(Amazon EC2上的Ubuntu 14.04 64位)运行ipython笔记本。

我可以通过ssh隧道访问ipython笔记本,如coderwall blog所述:

remote$ipython notebook --no-browser --port=8889

local$ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host

但是,我无法像official doctutorial中描述的那样使用http协议进行简单访问。

remote$ipython notebook --no-browser --port=8889

并将我的本地浏览器指向http://mypublicip:8889,浏览器没有任何警告而失败。

2个回答

18
为了解决这个问题,我需要:
  1. 运行笔记本服务器,监听所有IP地址,添加cli标志--ip=*:

    remote$ipython notebook --no-browser --ip=* --port=8889

  2. 在亚马逊EC2实例中添加入站规则,以便监听端口8889。 +-----------------+----------+------------+-----------+ | 类型 | 协议 | 端口范围 | 来源 | +=================+==========+============+===========+ | 自定义TCP规则 | TCP | 8889 | 0.0.0.0/0 | +-----------------+----------+------------+-----------+

当然,现在最好添加身份验证,因为该端口正在监听所有IP地址


在某些 shell 中需要转义星号。 - Viktor Vojnovski

4
如下所述,您的shell可能会尝试匹配*字符。在这种情况下,您应该写成--ip=\*。显式地将IP地址添加到本地主机也有帮助:
 ipython notebook --no-browser --ip=localhost  --port=7777

这个不起作用的原因是因为 shell 尝试扩展通配符 *。将其替换为 --ip=\* 以转义通配符,这样你就可以接受来自任何 IP 的连接了。 - Kyle Pittman
完美的答案!只需将 --ip=localhost 更改为 --ip=你的IP地址,它应该就可以了。 - Rafay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接