当前位置: 首页 > news >正文

在Linux服务器上部署Jupyter Notebook并实现ssh无密码远程访问

Jupyter notebook版本7.4.2(这个版本AI提示我Jupyter7+(底层是 jupyter_server 2.x)

服务器开启服务

安装Jupyter notebook 7.4.2成功后,终端输入

jupyter notebook --generate-config

这将在 ~/.jupyter/ 目录下生成 jupyter_notebook_config.py 文件。

进入目录将文件名修改为jupyter_server_config.py,内容的注释全部删除内容改为下面的

c = get_config()# 网络与端口设置
c.ServerApp.ip = '0.0.0.0'              # 允许任意 IP 访问
c.ServerApp.port = 8888                 # 监听端口
c.ServerApp.open_browser = False        # 禁止自动打开浏览器
c.ServerApp.allow_remote_access = True   # 允许远程访问
c.ServerApp.token = ''                  # 关闭 token 验证# 设置密码(格式:sha1:<salt>:<hashed_password>)
c.PasswordIdentityProvider.hashed_password = ''

然后通过下面的命令开启服务

jupyter notebook --no-browser --port=8888

这表示在服务器的8888端口开启服务

主机ssh连接

再打开一个主机的命令行,使用下面的命令

ssh -N -L 9913[这个地方可以自行设定四位十进制数字]:127.0.0.1:8888 ubuntu[这个地方要是你的服务器用户]@192.168.88.146[这个地方是你的服务器地址]

比如我的

ssh -N -L 9913:127.0.0.1:8888 ubuntu@192.168.88.146

这个命令表示将主机的9913和127.0.0.1   ip地址映射到远端(也就是服务器的8888端口)

然后通过主机浏览器输入下面的命令即可启用Jupyter的lab或者是输入tree启动传统界面

http://127.0.0.1:9913/lab

注意

在连接过程中遇到许多BUG会使得连接不成功,我记录一下我遇到的种种BUG

(1)服务器端口已被使用

当我们开启服务器端口后,希望关闭服务,使用非Ctrl+C的暴力方式退出,比如Ctrl+Z退出(实际上Ctrl+Z没有退出,只是挂起了程序),再次使用8888端口开启服务,就会自动在8889端口开启,如下图红框所示,这时我们如果还是拿主机连接,远端就要改为8889,但我似乎记得配置文件中写的是8888.。。。所以为了避免这种情况,我们固定拿Ctrl+C退出。

亦或者,emm,你已经一不小心挂起,而且不想重启服务器(实际上重新连接服务器即可)。那么是我们使用

jupyter notebook list

列出所有用作开启服务端口

OK,发现两个端口

逐个关闭所有端口,

#查看进程PID
lsof -n -i4TCP:<port-number>
#强制关闭PID
kill -9 <PID>

等下次使用时候,直接开启8888端口

(2)主机端口已被使用

就像刚刚所说的服务器8888端口退出不当,在下次使用8888端口开启服务的时候会默认开启8889端口,主机如果退出不当,也会产生这种现象。我们重启主机,或者更改主机ssh连接的端口即可。事实上我的9913也是因为不断连接而选取的数字,不过不用担心,当重启主机一切都会清空,事实上,也可以使用window下面的查看进程PID等操作,不过我不太熟悉,后面没有过多尝试

#查看进程PID
netstat -ano | findstr :<port-number>

(3)主机网页连接命令

看到网上绝大多数教程都是

loaclhost:8888

实际上这个localhost指的也是127.0.0.1(GPT告诉我的额)

我心想那我是不是这样就行了

loaclhost:9913

之后还是不行,可能是由于我是用版本的特殊性所致

Jupyter notebook版本7.4.2(这个版本AI提示我Jupyter(底层是 jupyter_server 2.x)

总之是一个让人窒息的版本。。。

(4)登陆密码

不管怎样,在配置文件中,我们可以给终端设置登陆密码

c.NotebookApp.password = 'sha1:fcf7f97ec219:fc3f70d16abf9626f6e8a9b1d84f297feebcf4f1'c.IdentityProvider.hashed_password = 'sha1:fcf7f97ec219:fc3f70d16abf9626f6e8a9b1d84f297feebcf4f1'

notebook是上面的,server是下面的,这里要注意密码的数值务必是哈希值,不然主机浏览器会一直显示密码输入不正确。我这个就是1234的哈希值。但是后来一直没有成功。配置文件中直接删除即可,就不用使用密码登陆了。

http://www.xdnf.cn/news/482077.html

相关文章:

  • 【Kubernetes】单Master集群部署(第二篇)
  • 15 C 语言字符类型详解:转义字符、格式化输出、字符类型本质、ASCII 码编程实战、最值宏汇总
  • 深度学习笔记23-LSTM实现火灾预测(Tensorflow)
  • Stratix 10 FPGA DDR4 选型
  • Visual Studio旧版直链
  • Elasticsearch 学习(一)如何在Linux 系统中下载、安装
  • 【简单模拟实现list】
  • 【PmHub后端篇】PmHub 中缓存与数据库一致性的实现方案及分析
  • c/c++的opencv的图像预处理讲解
  • 动态IP赋能业务增效:技术解构与实战应用指南
  • 1-10 目录树
  • 东方通2024年报分析:信创国产化龙头的蓬勃发展与未来可期
  • mysql的not exists走索引吗
  • uniapp-商城-60-后台 新增商品(属性的选中和页面显示)
  • MySQL——2、库的操作和表的操作
  • 割点与其例题
  • 管理工具导入CSV文件,中文数据乱码的解决办法。(APP)
  • 从类的外部访问静态成员:深入理解C#静态特性
  • C语言编程中的时间处理
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(1)
  • Vue3中setup运行时机介绍
  • MyBatis—动态 SQL
  • 网安面试经(1)
  • MySQL8.x新特性:与mysql5.x的版本区别
  • SpringBoot--Bean管理详解
  • 3D生成新突破:阶跃星辰Step1X-3D开源,可控性大幅提升
  • python + flask 做一个图床
  • ThinkPad X250电池换电池芯(理论技术储备)
  • windows系统中下载好node无法使用npm
  • STM32控制电机