为什么我无法访问远程Jupyter Notebook服务器?


90

我已经在centos6.5服务器上启动了Jupyter Notebook服务器。

[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).

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

可能是什么原因?

Answers:


143

您是否已将jupyter_notebook_config.py文件配置为允许外部连接?

默认情况下,Jupyter Notebook仅接受来自本地主机的连接(例如,从其运行所在的同一台计算机)。通过将NotebookApp.allow_origin选项从默认的''修改为'*',您可以从外部访问Jupyter。

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

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

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


另请参阅此线程的后续答案中的详细信息。

Jupyter Notebook配置文件上的文档。


9
与jupyter一起使用时,jupyter notebook --ip 0.0.0.0您可以决定运行时是否具有相同的结果,但不需要配置文件。
janniks

还有其他想法吗?我确实尝试过此问题的所有可用答案,但没有一个对我有用。我已经设置好配置,允许外部访问,允许所有IP和来源...仍然拒绝连接。我不明白为什么要这么难。使用Windows确实让我很烦。
卢卡斯·利马

72

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

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

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


26
我用过jupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid

1
0.0.0.0将允许在所有网络接口上访问笔记本,而不仅仅是本地主机。如果你正在运行它,并访问它在同一台机器上,或者你正在运行像在它前面的nginx服务器,你应该把它限制在127.0.0.1只有
theferrit32

此外,如果你是像EC2云实例运行,那么请确保您编辑的安全组允许入站流量在端口8888
疯狂的科学家

34

James023已经给出了正确答案。只是格式化

如果尚未配置jupyter_notebook_config.py文件

步骤1:在控制台中输入以下内容来生成文件

jupyter notebook --generate-config

步骤2:编辑值

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

(在任意位置添加以下两行,因为无论如何都会注释默认值)

c.NotebookApp.allow_origin = '*' #允许所有起源

c.NotebookApp.ip = '0.0.0.0' #监听所有IP

第三步:一旦您关闭了gedit,以防您的端口被阻塞

sudo ufw allow 8888 #启用您的tcp:8888端口,这是您的默认jupyter端口

第四步:设置密码

jupyter notebook password #它将提示输入密码

步骤5:启动Jupyter

jupyter notebook

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


还有一件事。如果仍然遇到问题,请在之前c.NotebookApp.allow_origin添加c=get_config()。同样,在您的个人计算机中打开链接时,请不要使用httpsuse http。所以它会打开类似的东西http://external_ip_from_GCP_console:8888。使用http非常重要,它的细节很小,很容易覆盖。感谢@Koushik汇编答案。我支持您的回答,因为它对我有用。
StatguyUser

19

在RedHat 7中,我们需要在运行Jupiter命令之前允许特定的端口。说港口是8080

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

这样我们就可以正常运行了。例如,使用:

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

或任何你喜欢的。


谢谢,我的系统是Centos 7,但是jupyter遇到问题。首先,我禁用了防火墙,但仍然无法使用,但是特别是在应用第二行===> jupyter notebook --ip 0.0.0.0 --no-browser --port = 8080 --allow-root解决了问题。现在可以使用了。
RedArrow

运行指定ipport完美的笔记本
Wu

对我来说,这也解决了jupyterhub的访问问题。jupyterhub使用的标准端口不允许127.0.0.1之外的连接
Eduardo Pignatelli,

同样适用于ec2实例。这有点令人困惑,因为安全组允许该端口,但服务器不可用,直到您使用这些参数运行。
瓦迪姆

8

或者,您可以只创建到服务器的隧道:

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

然后只需127.0.0.1:8888在浏览器中打开即可。

-i <your_key>如果没有identity_file,也将省略。


如果使用不同的端口,8888:127.0.0.1:8888则第一个8888是本地计算机上的端口,第二个是远程计算机上的端口。
元头

ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_port就我而言。谢谢。
Catbuilts

7

从命令行中,我们可以看到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。


也许您还需要取消注释并在jupyter_notebook_config.py文件中编辑该位置:

c.NotebookApp.allow_remote_access = True

甚至关闭您的VPN(如果有的话)。


4

另一个原因可能是防火墙。即使有同样的问题

jupyter笔记本--ip xx.xx.xx.xxx-端口xxxx。

事实证明,这是我们新的centOS7上的防火墙。


1

我在Windows 10上使用Anaconda3。安装后,将其标记为“添加到环境变量”。


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

检查是否有笔记本配置文件 jupyter_notebook_config.py。该文件的默认位置是位于主目录中的Jupyter文件夹:

  • 视窗: C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

如果您还没有Jupyter文件夹,或者您的Jupyter文件夹不包含笔记本配置文件,请运行以下命令:

$ jupyter notebook --generate-config

如有必要,此命令将创建Jupyter文件夹,并jupyter_notebook_config.py在此文件夹中创建笔记本配置文件。


默认情况下,Jupyter Notebook仅接受来自本地主机的连接。

如下编辑jupyter_notebook_config.py文件以接受所有传入连接:

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

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

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


0

如果使用的是Conda环境,则应重新设置配置文件。文件位置将是这样。在Conda中创建环境后,我没有设置配置文件,这是我的连接问题。

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


0

我遇到了同样的问题,但以上任何解决方法均不适合我。但是,如果我使用相同的配置设置了docker版本的jupyter笔记本,那么它对我来说是可行的。

对于我来说,可能是iptables规则问题。有时,您可能只是ufw用来允许所有路由到您的服务器。但是我只是iptables -F为了清除所有规则。然后检查iptables -L -n其是否有效。

问题已解决。


0

在jupyter_notebook_config文件上编辑以下内容,
输入实际的计算机IP地址
c.NotebookApp.ip ='192.168.xx'c.NotebookApp.allow_origin
='*'

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

在浏览器上设置密码登录后,然后键入远程服务器的IP地址和端口。例如192.168.1.56:8889


0

尝试执行以下步骤:

以下命令修复了读/写

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

-1

那是您的私人IP地址吗?如果是这样,您将需要使用您的公共帐户。去ipchicken找出它是什么。我知道您在同一个LAN中,但是请尝试使用此方法查看它是否可以解决任何问题。


-2

任何仍然卡住的人-请按照本页上的说明进行操作。

基本上:

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

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

  3. 在新窗口中,按照上述链接中的说明输入SSH命令。

  4. 打开网络浏览器,然后转到http://127.0.0.1:8157

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.