我正在尝试在浏览器中打开 Jupyter 笔记本。 Jupyter 似乎连接得很好:
[I 20:38:02.663 NotebookApp] Serving notebooks from local directory: /home/user/.jupyter
[I 20:38:02.663 NotebookApp] Jupyter Notebook 6.2.0 is running at:
[I 20:38:02.663 NotebookApp] http://nameofVM:8888/
但是,当我插入给定的 URL ( http://nameofVM:8888/
) 时,页面不会加载,并显示错误消息,就像您尝试访问该网站不存在的页面时一样。
我已经尝试了解决方案中的所有步骤这个帖子。我还通读并尝试使用故障排除文档。我不确定如何解决这个问题,以及是否有 Linux 特定的解决方案。有没有人有什么建议?我将不胜感激。
笔记:
当我检查所有内核的列表时,我有一个:
python3 /home/user/.local/share/jupyter/kernels/python3
我使用的是运行 Ubuntu 16.04.7 的 Linux VM
答案1
我认为这可能是由于 Jupyter 出于安全考虑而进行的默认配置。
问题
要明确您的情况:您有一台主机(未知操作系统)和虚拟机(Ubuntu)。尽管表面上它们在同一个盒子上运行,但从逻辑上讲,它们的行为就好像它们是两台完全不同的机器一样。因此,就两者之间的网络而言,您需要想象它们是两台不同的机器,但恰好位于同一网络上。
默认情况下,Jupyter 仅侦听 IP 地址127.0.0.1
(这里提到)。这被称为“本地主机”或“环回”,并且只能从运行 Jupyter 的同一台机器上访问它。无法从任何其他机器上访问它。因此,如果 Jupyter 未配置为侦听另一个地址,那么您的主机将无法连接。
允许您的主机连接
为了让你的主机你需要配置 Jupyter,就好像它是运行公共服务器。这是因为虚拟机将充当服务器,而您的主机将充当客户端。
这应该很简单。像这样运行 jupyter:
jupyter 笔记本 --ip=* --无浏览器
这告诉 Jupyter 监听所有 IP 地址 ( *
),并告诉它不要尝试在虚拟机上启动浏览器。
然后你应该能够连接到它您的虚拟机的 IP 地址: 从你的评论来看,是这样的http://10.1.1.4:8888
。
安全 - 不要忽视!
Jupyter 允许某人连接到他们喜欢的任何任意代码。
您尚未列出有关虚拟机管理程序或虚拟机配置的任何信息。根据网络的设置方式,您的虚拟机可能通过几种不同的方式进行网络连接:
它可以配置由主机模拟的虚拟网络。在这种情况下,虚拟机的互联网访问将通过网络地址转换。默认情况下这是安全的。网络上的其他物理机将无法访问您的 Jupyter。
它可以配置主机网络,其中虚拟机在主机的 LAN/WAN 上拥有自己的 IP 地址。 这很危险!通过这种类型的网络,默认情况下 LAN/WAN 上的任何其他人都可以访问 Jupyter,因此请务必小心确保其正确安全。
请仔细检查您正在使用的是什么。
答案2
您需要找出运行 Jupyter 的虚拟机的 IP。我的猜测是你的秘密nameofVM
听起来是“localhost”,这意味着“这台机器”。但由于您是从虚拟机的主机浏览,因此主机上的“localhost”意味着主机,而不是虚拟机。要找出 IP,请在虚拟机上运行:
ip a
您应该会获得网络接口的列表。 127.0.0.1 也是 localhost,意思是“本机”。所以你想要另一个ip。如果你ip a
在你的主机上运行,你会发现与虚拟机上类似的ip,这就是他们通信的方式。我假设你的主机也是 Linux。如果你想通过名称访问该服务(我的意思是 Jupyter),那么你需要一个解析器,我认为这是另一个故事。
为了澄清术语:vm 是在主机内部或主机下运行的实例。因此,我认为您正在使用运行 Ubuntu 的 Linux 虚拟机是错误的,因为它表明您正在运行一台虚拟机(在某个未知主机下),并且在其中运行另一台虚拟机,即 Ubuntu。
至于您评论中的wi-fi细节,它完全无关,因为主机通过它创建的虚拟网络连接到其中的虚拟机,所以您断开所有使用的wi-fi,它仍然没问题。
您也可以尝试在虚拟机中使用浏览器,但为此您需要一个具有图形界面(而不是文本界面)的虚拟机。