为什么我不能访问远程朱庇特笔记本服务器?

我已经在我的 centos6.5服务器上启动了一个 Jupiter 笔记本服务器

[I 17:40:59.649 NotebookApp] Serving notebooks from local directory: /root
[I 17:40:59.649 NotebookApp] 0 active kernels
[I 17:40:59.649 NotebookApp] The Jupyter Notebook is running at:https://[all ip addresses on your system]:8045/
[I 17:40:59.649 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

当我想在同一个局域网中远程访问木星时,比如打开 http://192.168.1.111:8045/,我根本无法打开木星页面。顺便说一下,我可以成功访问远程 centos 服务器。

可能的原因是什么?

182363 次浏览

那是你的私人 IP 地址吗?如果是这样,您需要使用您的公共之一。进入 ipChicken 找出它是什么。我知道你们在同一个局域网内,但是试试这个,看看它是否能解决任何问题。

您是否将 Jupyter _ notebook _ config. py文件配置为允许外部连接?

默认情况下,Jupiter Notebook 只接受来自本地主机的连接(例如,来自运行它的同一台计算机)。通过将 允许 _ 起源选项从默认的“’改为“ *”,可以从外部访问 Jupiter。

c.NotebookApp.allow_origin = '*' #allow all origins

您还需要更改笔记本将侦听的 IP:

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs

确保在进行任何修改之后取消注释这些设置(删除开头的 #)。如果您不这样做,它们将被解释为注释,并且它们不会改变 Jupiter 笔记本客户端的行为。

在这个线程中还可以看到 随后的回答中的详细信息。

关于 Jupiter 笔记本配置文件的文档。

我设法通过 ip 访问我的本地服务器,使用如下命令:

jupyter notebook --ip xx.xx.xx.xx --port 8888

xx.xx.xx.xx替换为 jupyter 服务器的本地 ip。

另一个原因可能是防火墙

Jupyter 笔记本 ip xx.xx.xx.xxx 端口 xxxx。

然后它变成了我们新的 centOS7的防火墙。

从命令行中,我们可以看到 Jupyter 服务器正常运行。无法访问远程 jupyter 服务器的原因是远程 centos6.5服务器的防火墙规则阻止来自本地浏览器的请求,即阻止 tcp: 8045端口。
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
然后再试着进入你的木星。


也许你还需要取消注释并编辑 jupyter_notebook_config.py文件中的那个位置:

c.NotebookApp.allow_remote_access = True

甚至关闭你的 VPN如果你有的话。

在 RedHat7中,我们需要在运行 Jupiter 命令之前允许特定的端口。

iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT

然后我们可以正常运行它,例如,使用:

jupyter notebook --ip 0.0.0.0 --no-browser --port=8080 --allow-root

或者你喜欢的任何东西。

詹姆斯023已经说出了正确的答案。 正在格式化

如果您还没有配置 jupyter _ book _ config.py 文件

步骤1: 通过在控制台中键入这一行来生成文件

jupyter notebook --generate-config

步骤2: 编辑值

gedit  /home/koushik/.jupyter/jupyter_notebook_config.py

(在任何地方添加以下两行,因为默认值都是注释的)

允许所有来源

监听所有 IP 地址

步骤3: 一旦关闭 gedit,以防端口被阻塞

启用 tcp: 8888端口,这是默认的 jupyter 端口

步骤4: 设置密码

它会提示输入密码

第五步: 启动木星

jupyter notebook

然后像 http://xxx.xxx.xxx.xxx:8888/login一样连接?

或者你可以创建一个通向服务器的通道:

ssh -i <your_key> <user@server-instance> -L 8888:127.0.0.1:8888

然后在浏览器中打开 127.0.0.1:8888

如果没有 Identity _ file,也可以省略 -i <your_key>

如果您正在使用 Conda 环境,则应该再次设置配置文件。文件位置是这样的。在 Conda 中创建 env 之后,我没有设置配置文件,这是我的连接问题。

C:\Users\syurt\AppData\Local\Continuum\anaconda3\envs\myenv\share\jupyter\jupyter_notebook_config.py

任何人谁仍然卡住-按照指示 这一页

基本上:

  1. 遵循 AWS 最初描述的步骤。

    1. 正常打开 SSH。
    2. source activate python3
    3. 朱庇特笔记本
  2. 不要剪切和粘贴任何东西。而是打开一个新的终端窗口 没有关闭第一个。

  3. 在新窗口中输入 SSH 命令,如上面的链接所述。

  4. 打开浏览器进入 http://127.0.0.1:8157

如果您仍然有问题,并且正在运行类似 EC2 AWS 实例的东西,那么可能只是通过 AWS 控制台打开端口的情况。

看看这个答案

我在 Windows10上使用 Anaconda3。 安装时,请记住标记“添加到环境变量”。


先决条件: 笔记本配置文件

检查是否有笔记本配置文件, 这个文件的默认位置 是你的木星文件夹位于你的主目录:

  • 视窗: C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • 操作系统 X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

如果你还没有一个木星文件夹,或者你的木星文件夹不包含 一个笔记本配置文件,运行以下命令:

$jupyter notebook --generate-config

如果需要,这个命令将创建 Jupiter 文件夹,并创建笔记本 配置文件 jupyter_notebook_config.py,在这个文件夹中。


默认情况下,Jupiter Notebook 只接受来自 localhost 的连接。

按以下方式编辑 jupyter_notebook_config.py文件以接受所有传入的连接:

c.NotebookApp.allow_origin = '*' #allow all origins

您还需要更改笔记本将侦听的 IP:

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs

我也遇到了同样的问题,但是没有一个可以解决的办法。但是如果我安装一个 Docker 版本的 Jupyter 笔记本,使用相同的配置,它为我工作。

对我来说,这可能是 iptables 规则的问题。有时您可能只是使用 ufw来允许所有路由到您的服务器。但我只是 iptables -F清除所有的规则。然后检查 iptables -L -n,看看它是否工作。

问题解决了。

在 jupyter _ book _ config 文件中编辑以下内容
输入实际的计算机 IP 地址
C. NotebookApp.ip =’192.168.x.x’
C. NotebookApp.allow _ source =’*’

在客户端启动带登录密码的 Jupyter 笔记本
Jupyter 笔记本密码

在浏览器上设置密码登录后,输入远程服务器的 ip 地址,然后输入 port. example 192.168.1.56:8889

试着做下面的步骤:

下面的命令修复读/写

sudo chmod -R a+rw /home/ubuntu/certs/mycert.pem

我也遇到过类似的问题,在做了以下事情之后,我解决了这个问题:

  1. 检查你的木星配置文件: 这里有详细的描述; Https://testnb.readthedocs.io/en/stable/examples/notebook/configuring%20the%20notebook%20and%20server.html

您只需要从上面的链接中学习如何让 jupyter 服务器监听您的本地 machin IP --你需要知道你的本地计算机 IP (我在 ubuntu 上使用“ ifconfig-a”来查找)-请检查 centos6

完成配置后,可以在本地 IP 上运行 jupyter 笔记本: Jupyter 笔记本—— ip = * ——无浏览器

请将 * 替换为您的 IP 地址,例如: jupyter 笔记本电脑—— IP = 192.168.x.x ——无浏览器

你现在可以使用 ip: port 从任何连接到路由器的设备访问你的 Jupyter 服务器(该端口通常是8888,所以在我的例子中我使用了“192.168.x。X: 8888”从其他设备访问我的服务器)

现在,如果你想从公共 IP 进入这个服务器,你必须:

  1. 找到你的公共 IP (只需在谷歌上输入什么是我的 IP)
  2. 使用此 IP 地址而不是本地 IP 从任何未连接到同一路由器的设备访问服务器 请注意: 如果您的 linux 服务器运行在虚拟机上,您需要设置您的路由器,以允许访问您的 VB 从公共 IP,设置取决于路由器类型。 否则,您应该能够使用公共 IP 及其端口集从任何未连接到您的路由器的设备访问服务器,或者使用您的本地 IP 及其端口集从任何连接到同一路由器的设备访问服务器!

jupyter notebook --ip 0.0.0.0 --port 8888会起作用的。

首先,如果不可用,请先创建一个配置文件

jupyter notebook --generate-config

然后转向文件并编辑它

cd ~/.jupyter

取消对这三行的注释,或者全部删除,然后添加这三行

c.NotebookApp.allow_origin = '*' #allow all origins
c.NotebookApp.ip = '0.0.0.0' # listen on all IPs
c.NotebookApp.allow_remote_access = True

尝试连接远程 IP。 (如果您使用的是 AWS EC2,则需要将 IP 列入白名单,并启用客户端 PC 或端口8888上的所有 IP 地址的入站连接)

如果你还是联系不上,你可以试试

jupyter notebook --ip 0.0.0.0 --port 8888

使用端口8888在远程 linux 服务器上设置 nohup jupyter 笔记本,如下所示:

nohup jupyter notebook --no-browser --port 8888 &

如果使用 WSL2(Windows 上的 Debian/OpenSUSE 或 Ubuntu) ,将无法通过多重防火墙工作。防火墙将在跳转到远程服务器时阻止服务,当使用以下命令时,将报告端口8888上的绑定错误:

ssh -N -L 8888:localhost:8888 remote-server-alias

我假设远程服务器别名是在. ssh/config 文件中使用 JumpProxy 定义的。

如果您将端口8888改为8889,您将看到 jupyter 可以在包括 Windows10在内的所有平台上加载。这不是一个明显的陷阱,让我困惑了一整天。不用说,您必须在 Windows 机器上启动并运行一个 apache2服务器。

所以魔法就是:

 ssh -N -L 8889:localhost:8888 remote-server-alias