IPython:如何通过Web浏览器远程访问笔记本服务器

5
我希望通过Web浏览器远程访问笔记本服务器,以下是我设置笔记本服务器的步骤:
1.生成配置文件。
$ jupyter-notebook --generate-config
$ cd ~/.jupyter

2. 使用以下命令创建SSL证书(适用于Linux和Windows)。

req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

3.编辑配置文件,该文件名为jupyter_notebook_config.py,密码已生成。

c = get_config()

# You must give the path to the certificate file.
c.NotebookApp.certfile = u'/home/azureuser/.jupyter/mycert.pem'

# Create your own password as indicated above
c.NotebookApp.password = u'sha1:b86e933199ad:a02e9592e5 etc... '

# Network and browser details. We use a fixed port (9999) so it matches
# our Azure setup, where we've allowed :wqtraffic on that port
c.NotebookApp.ip = '*'
c.NotebookApp.port = 9999
c.NotebookApp.open_browser = False

4. 启动 $ jupyter-notebook 服务器

现在,您应该可以通过地址https://[PUBLIC-IP-ADDRESS]:9999访问您的Jupyter笔记本。

启动笔记本:

$  ~ jupyter-notebook 
[I 16:46:58.627 NotebookApp] Serving notebooks from local directory: /home/user
[I 16:46:58.627 NotebookApp] 0 active kernels 
[I 16:46:58.627 NotebookApp] The Jupyter Notebook is running at: https://SERVER_IP:9999/
[I 16:46:58.627 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

但是,当我在家打开浏览器时(笔记本服务器在实验室),在https://MY_SERVER_IP:9999页面无法打开。Chrome浏览器返回:

ERR_ADDRESS_UNREACHABLE

我该怎么办?


发生了什么?特别是:(A)浏览器会做什么?是否完全获取返回代码,是否完全连接等?(B)您是尝试从同一台计算机还是不同的计算机访问它?是否有防火墙阻挡或可能存在路由问题?(C)在启动或尝试访问时,命令行上是否出现任何异常情况? - cge
@cge,我已经在上面展示了详细信息。 - GoingMyWay
可能不是直接的答案,但我会建议:1)尽可能启动没有身份验证的jupyter服务并且不要打开端口2)从远程站点通过ssh -L jupyter_port进行隧道连接,并通过localhost访问。这样你就可以将所有身份验证相关的内容移动到工作且安全的ssh上。 - Lol4t0
听起来你的问题不太可能是与Jupyter有关,而是与访问实验室机器有关。你确定端口9999没有被什么东西阻塞吗?你能ping通这些机器吗?也许可以进行端口扫描?例如,我的实验室服务器几乎会阻止除ssh的22端口之外的所有端口,并且我们使用ssh进行端口转发,就像@Lol4t0建议的那样。对于另一种设置,我使用直接连接,但必须确保端口没有被防火墙阻止。 - cge
@cge,是的,你说得对,9999端口已经被阻止了。我可以ping这台机器。我通过ssh设置了笔记本服务器,所以22端口没有被阻止。 - GoingMyWay
@cge,我的服务器上还有另一个Apache进程正在运行。 - GoingMyWay
2个回答

3
你所遵循的指南有点过时,具体如下:
  1. Anaconda 版本为 4。
  2. Jupyter 预装在新 Anaconda 中
  3. Jupyter 默认端口为“8888”
  4. 你应该提到如何进行配置修改。我最后使用 nano 进行了修改。
  5. 无法在 conda 中使用“sudo”。
如果你想从头在 VPS 上安装 Ipython Notebook,并通过 ssh 访问它,我在这里编写了一份更新的教程:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-jupyter-notebook-to-run-ipython-on-ubuntu-16-04 在服务器上使用命令行安装和运行 Ipython Notebook 后,你可以使用 Putty(Windows)或类 Unix 系统(如 Mac 和 Linux)上的 ssh -L 命令进行 SSH 隧道连接笔记本。

0

服务器上对应的端口9999被阻止了,而且服务器是Centos7,无法使用iptables打开端口,因此需要使用firewall-cmd来激活该端口:

$ firewall-cmd --zone=public --add-port=9999/tcp --permanent
$ firewall-cmd --reload

如果防火墙未运行,只需启动服务即可。

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