本地浏览器打开远程服务器上的Jupyter Notebook/Lab以及常见问题&设置

文章目录

  • 本地浏览器中打开远程服务器上的Jupyter Notebook
  • 其他设置
    • 常用设置快速查询
    • 设置jupyter密码
    • 设置jupyter端口
    • 在浏览器中切换jupyter notebook和jupyter lab
  • 常见问题
    • 远程无法访问,但是启动jupyter的服务器可以

我们经常在远程服务器上工作,并想在本地浏览器中打开远程服务器上的Jupyter Notebook。可以通过以下这种方式实现。

本地浏览器中打开远程服务器上的Jupyter Notebook

  1. 查看jupyter的配置文件
    先检查是否有配置文件 /home/xxx/.jupyter/jupyter_notebook_config.py,其中xxx是你的用户名。
    如果没有的话,通过以下命令产生:
    $ jupyter notebook --generate-config
    Writing default config to: /home/xxx/.jupyter/jupyter_notebook_config.py
    
  2. 修改jupyter配置文件
    打开配置文件,会发现所有的设置都是comment掉的,可以找到以下设置进行相关修改并去掉comment,或者直接将以下设置写进配置文件。
    c.NotebookApp.ip = '*' # configure the notebook server to listen on all network interfaces
    # 也可以写成 c.NotebookApp.ip = '0.0.0.0',有一样的效果
    c.NotebookApp.open_browser = False #  disable the automatic launching of the web browser
    
  3. 运行jupyter并在本地浏览器中通过ip:8888打开
    以上设置完成后,在远程服务器上启动jupyter,会出现以下页面:
    本地浏览器打开远程服务器上的Jupyter Notebook/Lab以及常见问题&设置_第1张图片

现在可以在本地浏览器中通过ip:8888打开远程服务器上的notebook了。其中8888是notebook默认使用端口,IP是远程服务器的IP地址。这里没有对远程服务器的Jupyter设置密码,从安全角度考虑,建议大家设一个。

解释一下以上的配置,这种方法是通过将notebook server设成public的方式实现的。notebook server默认是只监听localhost/127.0.0.1这个接口的(By default the notebook server only listens on the localhost/127.0.0.1 network interface)。如果你想要从远程连接notebook的话,就需要使notebook可以监听所有的网络接口,并且不打开浏览器。
c.NotebookApp.ip = '*'这个配置使notebook server可以监听所有网络接口,而c.NotebookApp.open_browser = False这个配置关闭了浏览器自动打开设置。

其他设置

常用设置快速查询

以下是配置文件中的常用设置,也可以在启动notebook时用参数设置

常用设置 含义
c.NotebookApp.ip = ‘*’ 对所有ip都开放访问
c.NotebookApp.open_browser = False 关闭了浏览器自动打开设置
c.NotebookApp.port = number 默认端口设为number

设置jupyter密码

  1. 打开一个python的解释器,在里面执行
    from notebook.auth import passwd; passwd()
    
  2. 交互式地填入你期待的密码,重复写两次,就可以得到密码的sha编码,把这个编码复制起来本地浏览器打开远程服务器上的Jupyter Notebook/Lab以及常见问题&设置_第2张图片
  3. 打开jupyter的配置文件
  4. 查看配置项:c.NotebookApp.password,把刚刚复制的密码sha编码,填到这个配置中
  5. 重启jupyter notebook

设置jupyter端口

jupyter的默认端口是8888,如果这个端口被占或者有别的设置端口的需求的话,可以通过修改配置文件

c.NotebookApp.port = number

或者启动jupyter时通过参数设置

jupyter notebook --port number

在浏览器中切换jupyter notebook和jupyter lab

ip:8888/tree 打开jupyter notebook
ip:8888/lab 打开jupyter lab

常见问题

远程无法访问,但是启动jupyter的服务器可以

(以下问题以及解决方法是一位同事总结的,感觉非常有用且经常参考,所以被我搬过来了)

以下排查点按从上到下顺序执行

排查点 命令 执行命令的地方 正常的现象 不正常的现象 如何解决
网络是否通畅 ping 目标ip 远程机器上 一直弹出新的进度 只显示一行,卡住不动 检测ip是否填错;找相关人解决
端口是否通畅 nmap -p 端口 目标ip 远程机器上 本地浏览器打开远程服务器上的Jupyter Notebook/Lab以及常见问题&设置_第3张图片 本地浏览器打开远程服务器上的Jupyter Notebook/Lab以及常见问题&设置_第4张图片 如果是closed:代表远程服务没有启动,或者由于服务原因导致你无法访问。请排查服务的配置中是否有限制访问ip的选项。如果是filterd:代表被防火墙过滤了,请排查防火墙限制问题
jupyter配置是否限制了访问ip 打开jupyter配置文件,查看c.NotebookApp.ip 配置 c.NotebookApp.ip = ‘*’ 或者’0.0.0.0’代表对所有ip都开放访问 #c.NotebookApp.ip ='localhost’或c.NotebookApp.ip = ‘localhost’ 这是默认值,代表只能在启动notebook的机器上访问 将这个配置设置为正确的格式即可
防火墙是否有限制 只限centos7的解决方案
sudo firewall-cmd --list-ports
启动notebook的机器上 防火墙关闭 在这里插入图片描述
或者列出来的端口包含你启动notebook的端口 在这里插入图片描述
不包含这个端口 开放端口
sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent
sudo firewall-cmd --reload

你可能感兴趣的:(python,服务器,jupyter,linux)