首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何远程访问服务器的 Jupyter notebook

如何远程访问服务器的 Jupyter notebook

作者头像
kbsc13
发布于 2019-08-16 08:00:24
发布于 2019-08-16 08:00:24
10.6K00
代码可运行
举报
文章被收录于专栏:AI 算法笔记AI 算法笔记
运行总次数:0
代码可运行

图来自 Unsplash 网站,作者:Christopher Gower

2019 年第 52 篇文章,总第 76 篇文章 本文大约 4600 字,阅读大约需要 12 分钟

写在前面

当我们拥有一台服务器的时候,通常服务器都可能包含比本地电脑比较好的配置,特别是如果做深度学习的,服务器通常意味着有好的 GPU;然后,Jupyter notebook 允许我们可以非常直观地调试代码,每完成一个函数或者一部分代码,运行一下,保存当前代码的运行结果。

所以是否可以服务器上运行 Jupyter notebook,然后本地电脑连接,直接在本地电脑写,然后服务器上运行代码呢?

官方文档给出了答案,可以。

下面会翻译下官方文档给出的方法,这里可能有的地方翻译不太到位,请见谅。

另外,关于 Jupyter notebook 的安装和简介,可以查看我之前发表过的文章--Python 基础入门--简介和环境配置


原文--https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#notebook-server-security

Jupyter notebook[1]是一个基于服务器-客户端结构的网络应用,其服务器端是采用一个基于 ZeroMQ[2]和Tornado[3]双进程核心结构[4],其中后者 Tornado 负责处理 HTTP 的请求服务。

注意:默认 notebook 的服务器运行在本地的 IP 地址是 127.0.0.1:8888,并且也只能通过 localhost 进行访问,也就是可以在浏览器中输入 http://127.0.0.1:8888 进行访问

但本教程将介绍如何访问一个 notebook 的服务器,并且采用一个公开的接口。

这里提醒,这不是应用于多人服务器的教程,仅供用于只有一个人使用的服务器的情况,如果是希望多人使用的情况,可以采用 JupyterHub[5],如果要应用 JupyterHub,需要一台 Unix (通常就是 Linux)的服务器,然后可以连接网络。

接下来就介绍如何实现远程访问服务器的 Jupyter notebook 的方法。


配置 notebook 服务器

首先可以通过设置密码来保护你的 notebook 服务器,在 5.0 版本的 notebook,这一步可以自动化实现了。当然要手动设置密码的话,需要在文件 jupyter_notebook_config.py 中修改 NotebookApp.password 这里的内容。

1. 前置条件:一个配置文件

第一步就是先找到或者生成配置文件 jupyter_notebook_config.py ,默认的配置文件是在 Jupyter 文件夹中的,不同系统位置如下:

  • WindowsC:\Users\USERNAME.jupyter\jupyter_notebook_config.py
  • OS X/Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux/home/USERNAME/.jupyter/jupyter_notebook_config.py

如果上述位置没有这个文件,可以通过下列命令生成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ jupyter notebook --generate-config

如果是 root 用户执行上面的命令,会发生一个问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Running as root it not recommended. Use --allow-root to bypass.

提示信息很明显,root 用户执行时需要加上 --allow-root 选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jupyter notebook --generate-config --allow-config

执行成功后,会出现下面的信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
2. 生成密码
自动生成

notebook 5.3 版本开始,当第一次通过令牌(token)登录的时候,notebook服务器会让用户有机会在用户界面设置一个密码,这将通过一个表单来询问当前的令牌以及新的密码,输入并点击 Login and setup new password

下次登录时候就可以直接选择输入密码而不需要令牌。如果没有设置密码,也可以按照下面的操作通过命令行设置密码。此外,可以在配置文件中设置 --NotebookApp.allow_password_change=False 来禁止第一次登录时候修改密码。

notebook 5.0 版本开始,可以通过一个命令 jupyter notebook password设置密码并保存到文件 jupyter_notebook_config.json,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ jupyter notebook password
Enter password:  ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json
手动生成

除了上述方法,也可以手动生成密码,方法如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

passwd() 方法在没有传入参数时候,会如上所示提示输入和验证密码,它也可以传入一个字符串作为密码,即 passwd('mypassword') ,但不建议这种做法,因为本来输入命令都会被保存起来,直接输入密码,相当于密码以明文方式保存在输入历史。

添加到配置文件

最后一步,就是需要将哈希密码添加到配置文件 jupyter_notebook_config.py,也就是刚刚手动生成的例子中的 sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
3. 采用 SSL 加密通信

采用密码的时候,配合带有网站证书的 SSL 是一个好办法,可以避免哈希的密码被非加密的形式发送给浏览器。

可以通过设置参数 certfile 来开启 notebook 服务器,进行一次安全协议模式的通信,其中 mycert.perm 是自签(self-signed)证书。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ jupyter notebook --certfile=mycert.pem --keyfile mykey.key

自签证书可以通过 openssl 生成,如下所示,生成一个有效期为 365 天,将 key 和 证书数据都保存在同个文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

当打开浏览器连接服务器的时候,浏览器会提示你的自签证书是不安全或者无法识别的,如果你希望获取不会产生警告的自签证书,可以根据教程[6]所说来操作。此外,也可以通过采用 Let's Encrypt [7]来得到免费的 SSL 证书,然后根据教程[8]来配置服务器。

运行 notebook 服务器

上述步骤介绍了如何进行配置,接下来就是开始运行服务器,然后远程访问。这里首先还是需要进行如下操作,也就是修改配置文件 jupyter_notebook_config.py,找到下面几个信息修改并去掉注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 证书的信息
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
# ip 设置为 *
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
c.NotebookApp.open_browser = False

# 设置一个固定的接口
c.NotebookApp.port = 80

这里官方教程是建议 c.NotebookApp.ip 设置为 * ,但实际上这样操作可能会连接失败,所以可以选择设置为 0.0.0.1 或者就是服务器的 IP

我这边最终主要配置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c.NotebookApp.ip = '服务器IP'
c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =80 #可自行指定一个端口, 访问时使用该端口

接着运行命令,如果是 root 用户,需要再加上 --allow-root

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ jupyter notebook

然后本地浏览器输入 服务器IP:80,接着就是输入刚刚设置的密码,即可访问 Jupyter notebook,然后就和在本地电脑操作 Jupyter notebook 一样,创建文件,运行。

需要注意的是不能在隐藏目录 (以 . 开头的目录)下启动 Jupyter notebook, 否则无法正常访问文件。

如果访问失败了,则有可能是服务器防火墙设置的问题,此时最简单的方法是在本地建立一个 ssh 通道: 在本地终端中输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ssh username@address_of_remote -L 127.0.0.1:1234:127.0.0.1:8888

便可以在 localhost:1234 直接访问远程的 jupyter notebook了。

关于 ssh 通道的知识,可以查看:

https://www.zsythink.net/archives/2450


参考:

[1]: https://jupyter-notebook.readthedocs.io/en/latest/notebook.html

[2]: http://zeromq.org/

[3]: http://www.tornadoweb.org/

[4]: https://ipython.readthedocs.io/en/stable/overview.html#ipythonzmq

[5]: https://jupyterhub.readthedocs.io/en/latest/

[6]: https://arstechnica.com/information-technology/2009/12/how-to-get-set-with-a-secure-sertificate-for-free/

[7]: https://letsencrypt.org/

[8]: https://jupyter-notebook.readthedocs.io/en/latest/public_server.html#using-lets-encrypt

  • https://blog.csdn.net/simple_the_best/article/details/77005400
  • https://www.jianshu.com/p/7cac2e5ec35b
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法猿的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设置 jupyter notebook 可远程访问
默认情况下,安装好 Anaconda 后打开 jupyter notebook, 访问本地 localhost:8888 即可。但是如果要访问另一台机器,比如远端服务器上的 notebook, 即默认是不支持 172.104.105.119:8888 这样的访问,需要额外配置。
用户1558438
2018/08/23
2.4K0
jupyter notebook+Spark配置远程登录服务器
安装Anaconda,就已经自动jupyter notebook,没有的话自己从新安装。
foochane
2019/05/23
3.2K0
使用jupyter notebook连接服务器进行远程炼丹
执行完之后退出python终端,具体命令为: exit() 接下来生成秘钥: openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem # 按照提示填写一大堆东西
AI算法与图像处理
2019/12/12
1.8K0
使用jupyter notebook连接服务器进行远程炼丹
用windows浏览器打开Linux的Jupyter notebook开发、调试示例
本文介绍了如何在Windows操作系统上通过浏览器来远程访问Linux服务器上的Jupyter Notebook,以便进行Python和Spark编程。首先介绍了安装和配置Jupyter Notebook和Spark的必要步骤,然后阐述了如何在浏览器中访问Linux服务器上的Jupyter Notebook。
王小雷
2018/01/02
2.7K0
用windows浏览器打开Linux的Jupyter notebook开发、调试示例
远程访问服务器的 Jupyter
Jupyter notebook 是一个非常好用的工具,如果你拥有一台云服务器,那么你就可以通过浏览器访问你的私人 Jupyter notebook,在任意一台没有 Python 环境的机器上运行它。
EmoryHuang
2022/10/31
4.7K0
远程访问云服务器的jupyter notebook
默认你安装好了Anaconda,打开Terminal安装jupyter notebook。
喜欢ctrl的cxk
2021/01/05
13.1K0
Use Jupyter notebook on Fedora 28
生产环境使用 Fedora 28, 并且需要搭建一个 Jupyter 的notebook 方便使用,所搭建的Jupyter 支持单人远程 密码访问
西湖醋鱼
2020/12/30
5640
远程部署CentOS上的Jupyter Notebook并在浏览器访问
生成的config file在/root/.jupyter/jupyter_notebook_config.py
SL_World
2021/09/18
1.3K0
本地远程使用服务器的jupyter notebook
此处只能本地端口为8888,服务器端口为8889;最后是用户名和服务器的ip地址。
生信编程日常
2020/06/02
5.4K0
手把手教你搭建远程Jupyter Notebook
已经有超过三人像我反应使用网上的教程Anaconda有问题,有的装不了,有的装的直接整的自己yum命令用不了,linux服务器都被整费。为此我给大家写的简单的安装教程,避免大家可能踩的坑。
abs_zero
2021/11/17
2.4K1
如何在服务器上部署Jupyter
二。安装jupyter 需要安装jupyter,理论上安装好anaconda后就能够运行了,可以试试conda命令是否有效,未找到jupyter命令则pip安装
种花家的奋斗兔
2020/11/13
2.8K0
jupyter notebook 远程访问
登录搬瓦工 $ jupyter notebook --generate-config # 生成配置文件 Writing default config to: /home/iosdevlog/.jupyter/jupyter_notebook_config.py $ vim ~/.jupyter/jupyter_notebook_config.py # 这个文件里面有详细说明 $ ipython # 配置密码 Python 3.6.6 (default, Jun 28 2018, 04:42:43) Type
iOSDevLog
2018/09/20
2.9K0
jupyter notebook 远程访问
设置使用密码访问 jupyter notebook 服务
检查是否存在配置文件jupyter_notebook_config.py,这个文件的默认位置时在你的主目录下Jupyter文件夹中:
fanzhh
2019/08/20
2.9K0
深度学习实战 | jupyter开启远程访问
该命令执行完成后将会生成:~/.jupyter/jupyter_notebook_config.py配置文件,后述将在该文件中完成配置。
算法与编程之美
2019/07/24
7820
服务器没有Xmanager如何可视化结果,jupyter远程连接SSH服务器,本地访问服务器得到可视化结果
看了官网的基础操作,https://jupyter.readthedocs.io/en/latest/running.html#id3,意思是,如果你已经安装了anaconda,那就jupyter就已经安装好了,否则的话,可以使用pip和conda安装。
水球喵子
2018/07/27
1.6K0
远程Jupyter来实现Python气象聚类分析
日常工作、学习中可能都会有小型工作站或者是服务器(云服务器)供大家使用,而且使用Python的频率也挺高的,那么通常都会有可能个人电脑性能有限、存储空间或者内存有限的情形,那么我们Jupyter notebook就能够发挥很大的作用,特别是在公司、学校、或者单位局域网的环境下,远程的延迟相对较小,使用Jupyter来做Python数据处理和绘图实在是不错的选择。远程端负责计算,个人电脑仅仅是一个编辑器的作用。对于一些云服务器,可能相应的端口管理会更加严格一些,但通过设置远程使用Jupyter基本都没有问题。其实,本文所提及的远程使用jupyter主要集中于Python的配置、安装、使用。各取所需,仅仅做简单推介,不做深入的探讨。后文以Kaggle的气象聚类分析为例,实操一下如何远程Jupyter notebook使用Python的库来计算和绘图。
MeteoAI
2019/09/24
2.2K0
远程Jupyter来实现Python气象聚类分析
jupyter远程安装文档
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/09/08
8910
jupyter notebook 服务安装与启动
执行后会生成配置文件, ~/.jupyter/jupyter_notebook_config.py
大鹅
2021/06/02
2.2K0
centos下安装运行jupyter及docker方式安装
jupyter notebook是一个网页版的python编写交互模式,他的功能类似于ipython,但是他使用过程很类似我们使用纸和笔操作, 可轻松擦除我们先前写的代码。并且他还可以将我们的编写的代码进行保存记录,用来做笔记以及编写简单代码相当方便。那么下面让我们来看如何安装使用jupyter notebook。 #在centos下的安装操作如下。
菲宇
2022/12/21
1.4K0
centos下安装运行jupyter及docker方式安装
远程连接服务器jupyter notebook、浏览器以及深度学习可视化方法
问题背景 本文主要希望解决如下两个问题: 1.远程登录jupyter notebook 2.远程运行深度学习框架如何可视化loss和accuracy? 服务器一般都是字符界面的,但是有时我们需要可视化我们的结果,这样能够直观的看到我们的训练成果,这该怎么办呢? 没关系,因为服务器都会内置一个firefox浏览器,你只需要在命令窗口输入 >>> firefox 之后你的本地电脑会弹出一个Firefox的窗口,是不是很惊奇!!!(我使用的连接服务器的软件是MobaXterm)。正常的情况会出现这个界面(当然如果
marsggbo
2018/04/23
2.5K0
远程连接服务器jupyter notebook、浏览器以及深度学习可视化方法
推荐阅读
相关推荐
设置 jupyter notebook 可远程访问
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档