python - 将 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
现在它打开需要输入令牌的笔记本,然后它就可以工作了。
我的问题是,我们是否需要每次都进行端口转发才能在远程服务器上打开笔记本?我的一位同事说他没有进行任何端口转发,并且在第一步之后,他能够通过键入打开笔记本
所以我不确定我们是否需要进行端口转发才能打开服务器 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。
解决方案
如果--ip
在启动服务器时指定该选项,则可以允许远程连接而无需端口转发。
jupyter notebook --no-mathjax --no-browser --ip 0.0.0.0 --port 8890
# The --no-mathjax improves loading over slow connections
但是,不建议这样做。请参阅运行公共 jupyter 笔记本服务器。如果您这样做,我强烈建议您设置密码,如该链接中所述。
推荐阅读
- javascript - 到 PHP 的 AJAX POST (JQuery) 不起作用。我该如何解决?
- cloudflare - Cloudflare 防火墙 ip 规则未 100% 列入白名单
- javascript - 如何将键/值添加到对象中的对象?
- mysql - 如何使精确的 unicode 字符优先于 ASCII 版本?
- selenium - 测试用例在完成 beforeAll 之前执行。?
- javascript - 如何使用 AJAX 加载下一页
- python - Kivy/Python 尝试在网格布局中拖动时激活/停用按钮
- qt - 短 QStrings 会与 qHash 发生冲突吗?
- unicode - D 语言:我无法将从 Wikipedia unicode 图表复制的文本块拆分为单字母字符串列表。编辑器中的输出错误
- latex - 在 Rmarkdown 中将数字添加到书目列表