【发布时间】:2020-04-13 09:32:10
【问题描述】:
我有一个 linux 服务器。我已经安装了 Miniconda3 和其他 python 包以及 Jupyter。
现在我想在服务器上运行笔记本并在我的浏览器中打开。
为此,在安装完所有软件包后,我会这样做:
user@remoteip:$ jupyter notebook --no-browser --port=8890
现在我正在复制服务器 IP 地址和端口以在本地浏览器中打开它。
http://remoteip:8890
但是它并没有打开任何东西。
然后我遵循this SO answer 中给出的所有建议,在远程服务器 anaconda 甚至本地 anaconda jupyter 配置文件的配置文件中添加所需的语句。
但这根本没有帮助。
之后,我必须在本地终端中进行如下端口转发:
user@localhost: ssh -N -f -L localhost:8890:localhost:8890 user@remoteip
然后当我打开
localhost: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。
【问题讨论】:
-
我认为 ssh 隧道是显而易见的安全选择。尽管如此,您仍然可以使用,例如,nginx 将端口从您的外部适配器路由到本地主机,或者将“0.0.0.0”定义为您的笔记本接口。
-
cud u 详细扩展“define 0.0.0.0”作为您的笔记本界面选项?谢谢
-
我认为配置 ssh 配置文件以简化隧道的建立(即您有
ssh remoteip)是一个更安全的选择,并且您可以一键建立隧道。此外,您可以使用 autossh 来确保隧道的持久性。 -
你知道我们如何一击就能做到吗?