首页 > 解决方案 > 将 Jupyter 笔记本连接到远程服务器

问题描述

我有一个linux服务器。我已经安装了 Miniconda3 和其他 python 包以及 Jupyter。

现在我想在服务器上运行笔记本并在我的浏览器中打开。

为此,在安装所有软件包后,我会:

user@remoteip:$ jupyter notebook --no-browser --port=8890

现在我正在复制服务器 IP 地址和端口以在本地浏览器中打开它。

http://remoteip:8890

然而它并没有打开任何东西。

然后,我通过在远程服务器 anaconda 甚至本地 anaconda jupyter 配置文件的配置文件中添加所需的语句来遵循此 SO 答案中给出的所有建议。

但这根本没有帮助。

之后,我必须在本地终端中进行如下端口转发:

user@localhost: ssh -N -f -L localhost:8890:localhost:8890 user@remoteip

然后当我打开

localhost:8890 

现在它打开需要输入令牌的笔记本,然后它就可以工作了。

我的问题是,我们是否需要每次都进行端口转发才能在远程服务器上打开笔记本?我的一位同事说他没有进行任何端口转发,并且在第一步之后,他能够通过键入打开笔记本

http://remoteip:8890

所以我不确定我们是否需要进行端口转发才能打开服务器 jupyter notebook 以在浏览器中打开,或者我们可以直接使用 remoteip 地址打开笔记本?

编辑:

根据下面 Alex 的建议,在登录开发服务器后运行以下命令。

(ds_env) user@devvm1049:~$ jupyter notebook --no-mathjax --no-browser --ip 0.0.0.0 --port 8890
[I 23:49:56.032 NotebookApp] Serving notebooks from local directory: /home/user
[I 23:49:56.032 NotebookApp] The Jupyter Notebook is running at:
[I 23:49:56.032 NotebookApp] http://devvm.cdw.com:8890/
[I 23:49:56.032 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

将上面的链接复制到 chrome 和 Safari,但它没有打开任何东西。

我已经在这篇文章中完成了上述建议。到目前为止,唯一有效的方法是进行端口隧道,但每次必须在远程服务器上打开 jupyter 时都需要 3 个步骤。

这可能是一些端口阻塞问题吗?我尝试在笔记本电脑上 ping 远程服务器,但它没有给我任何 ping。

标签: pythonjupyter-notebook

解决方案


如果--ip在启动服务器时指定该选项,则可以允许远程连接而无需端口转发。

jupyter notebook --no-mathjax --no-browser --ip 0.0.0.0 --port 8890
# The --no-mathjax improves loading over slow connections

但是,不建议这样做。请参阅运行公共 jupyter 笔记本服务器。如果您这样做,我强烈建议您设置密码,如该链接中所述。


推荐阅读