jupyter 限制登陆_远程使用Jupyter

本文详细介绍了如何限制Jupyter Notebook的登陆,包括生成配置文件、设置密码、配置IP和端口,以及使用SSH端口转发实现远程安全访问。通过生成密码字符串和修改配置文件,确保了Jupyter的安全使用。同时,文章提到了两种方法,一种是直接修改配置文件,另一种是通过密钥进行身份验证,建议使用SSH端口转发以避免直接暴露服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6de3c3b95a01a736404dcaa3c7d85f6c.png

1.首先需要生成一个 notebook 配置文件

注意请先使用安装jupyter的用户登陆系统,比如我使用的是root安装,所以此时的“~”目录是“/root”
一般配置文件 ~/.jupyter/jupyter_notebook_config.py 需要自行创建。使用下列命令生成配置文件:
普通用户:

jupyter notebook --generate-config

root用户:

jupyter notebook --generate-config --allow-config

2.生成密码

生成密码有两种方式:命令生成或者python程序生成,前者的优先级更高,也就是说如果两种都设置了密码,那么jupyter会使用前者的密码,忽略后者,这个牵涉到后面配置文件

  1. 方法1

jupyter notebook password #出现下列文字,输入密码即可 Enter password: Verify password:

  1. 方法2

from notebook.auth import passwd passwd() #出现下列文字,输入密码即可 Enter password: Verify password:

以方法1为例,继续配置:
配置完密码后输出:

[NotebookPasswordApp] Wrote hashed password to ***/.jupyter/jupyter_notebook_config.json

进入文件查看并复制生成的字符串

vim ***/.jupyter/jupyter_notebook_config.json

字符串形式:
sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed

ssh -L 4000:localhost:8889 http://322.fsxbm.cn

3.配置文件

打开配置文件

vim ~/.jupyter/jupyter_notebook_config.py

直接添加以下代码即可(也可以找到对应的代码取消注释并修改):

c.NotebookApp.ip='*' # 允许所有ip访问 c.NotebookApp.open_browser = False c.NotebookApp.port = 8888 # 访问端口 c.NotebookApp.password = u'sha1:c78d25c8fce0:0d7d733801f79fb1bd7f353748c86aa523bd8248' c.NotebookApp.notebook_dir = '/jupyter' # 指定目录

重启jupyter服务

jupyter notebook

如果报错说IP地址无法映射之类的错误,可以输入命令
jupyter notebook --ip=<服务器IP>
root用户需要输入
jupyter notebook --ip=<服务器IP> --allow-root

完成,附效果图

接下来运行 Jupyter 。

$ jupyter notebook --config=jupyter_config.py

但是当前这样还存在一个问题,就是一旦关闭终端,Jupyter 程序也就终止了运行。这是因为该 Jupyter 程序作为当前终端的子进程,在用户终端关闭的时候将收到一个 hangup 信号,从而被关闭。

所以为了让程序能忽视 hangup 信号,可以使用nohup命令。同时还要配合&来将程序放入后台运行。

$ nohup jupyter notebook --config=jupyter_config.py &

SSH 端口转发

其实细心的同学之前一定发现了,我们之前将 Jupyter 的运行 IP 设置为localhost,这样的话是无法通过公网访问到 Jupyter 的。虽然网上通常的做法都是将 IP 设置为0.0.0.0,然后本地端直接通过服务器 IP 进行访问。这样做虽然简便快捷,但是直接将 IP 与端口向外开放的做法也存在风险。因此我更推荐的做法是采用 SSH 端口转发来实现访问,因为 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。

SSH 提供的端口转发,能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。

因此 SSH 端口转发能提供两大功能:

加密 SSH 客户端到 SSH 服务器端的通信

突破防火墙限制,建立一些之前受限的 TCP 连接

虽然 SSH 端口转发包含有许多内容,但是我们只需要用到其中的本地转发功能。

本地端口转发的命令格式是:

ssh -L ::

所以,为了同 Jupyter 服务器建立 TCP 连接,还需要在本地与服务器间建立起 SSH Tunneling。

具体到本例操作就是:

ssh -L 4000:localhost:8888 168.1.xx.xx -p -u

ssh -L 4000:localhost:8889 http://322.fsxbm.cn -p -u

之后便能通过localhost:4000来访问 Jupyter 服务器了

另一种方法

生成密钥

打开ipython,输入以下命令

>> from notebook.auth import passwd
>> passwd()

然后输入两次密码,可得到hash码,保存。

设置配置文件

看了网上其他人的策略通常是直接修改配置文件~/.jupyter/jupyter_notebook_config.py,但是个人不推荐这种做法,因为这样需要改动到默认的配置文件。

我推荐的做法是自行创建一个配置文件,然后在运行 Jupyter notebook 的时候动态加载配置信息。

创建配置文件,可以取名为jupyter_config.py。

配置内容如下:

c.NotebookApp.ip ='localhost'# 指定
c.NotebookApp.open_browser =False# 关闭自动打开浏览器
c.NotebookApp.port =8888# 端口随意指定
c.NotebookApp.password =u'sha1:d8334***'# 复制前一步生成的密钥

启动 Jupyter 服务器

接下来运行 Jupyter 。

$ jupyter notebook --config=jupyter_config.py

但是当前这样还存在一个问题,就是一旦关闭终端,Jupyter 程序也就终止了运行。这是因为该 Jupyter 程序作为当前终端的子进程,在用户终端关闭的时候将收到一个 hangup 信号,从而被关闭。

所以为了让程序能忽视 hangup 信号,可以使用nohup命令。同时还要配合&来将程序放入后台运行。

$ nohup jupyter notebook --config=jupyter_config.py &

SSH 端口转发

其实细心的同学之前一定发现了,我们之前将 Jupyter 的运行 IP 设置为localhost,这样的话是无法通过公网访问到 Jupyter 的。虽然网上通常的做法都是将 IP 设置为0.0.0.0,然后本地端直接通过服务器 IP 进行访问。这样做虽然简便快捷,但是直接将 IP 与端口向外开放的做法也存在风险。因此我更推荐的做法是采用 SSH 端口转发来实现访问,因为 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。

SSH 提供的端口转发,能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。

因此 SSH 端口转发能提供两大功能:

加密 SSH 客户端到 SSH 服务器端的通信

突破防火墙限制,建立一些之前受限的 TCP 连接

虽然 SSH 端口转发包含有许多内容,但是我们只需要用到其中的本地转发功能。

本地端口转发的命令格式是:

ssh -L ::

所以,为了同 Jupyter 服务器建立 TCP 连接,还需要在本地与服务器间建立起 SSH Tunneling。

具体到本例操作就是:

ssh -L 4000:localhost:8888 168.1.xx.xx -p -u

之后便能通过localhost:4000来访问 Jupyter 服务器了

作者:叶俊贤

链接:https://www.jianshu.com/p/a9de7a089834

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值