【问题标题】:Connecting Jupyter notebook to Remote server将 Jupyter 笔记本连接到远程服务器
【发布时间】: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 

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

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

打开笔记本

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。

【问题讨论】:

  • 我认为 ssh 隧道是显而易见的安全选择。尽管如此,您仍然可以使用,例如,nginx 将端口从您的外部适配器路由到本地主机,或者将“0.0.0.0”定义为您的笔记本接口。
  • cud u 详细扩展“define 0.0.0.0”作为您的笔记本界面选项?谢谢
  • 我认为配置 ssh 配置文件以简化隧道的建立(即您有ssh remoteip)是一个更安全的选择,并且您可以一键建立隧道。此外,您可以使用 autossh 来确保隧道的持久性。
  • 你知道我们如何一击就能做到吗?

标签: python jupyter-notebook


【解决方案1】:

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

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

不过,建议这样做。见running a public jupyter notebook server。如果您这样做,我强烈建议您按照该链接中的说明设置密码。

【讨论】:

  • 这里的ip是我的remoteip地址还是0.0.0.0
  • 使用0.0.0.0会让你使用远程机器IP地址进行连接。所以你可以在浏览器中使用remoteip:port
  • 您好,请检查编辑。我运行了上面的命令,但它似乎没有用。查看输出。
  • 这可能是由防火墙阻止传入连接引起的,您可能需要在 vpn 上才能访问此服务器。您可以尝试使用来自hostname -I 的IP 地址作为远程IP
  • 我在 vpn 上。没有 vpn,我无法登录我的开发服务器。我不确定我是否理解第二部分。你是什​​么意思“我可以尝试使用主机名中的 IP 地址”?谢谢你的耐心
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2017-09-24
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多