当前位置: 首页 > 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.dtcms.com/a/194396.html

相关文章:

  • 通信安全堡垒:profinet转ethernet ip主网关提升冶炼安全与连接
  • Jenkins 最佳实践
  • 探索大型语言模型(LLM)的开源学习路径:mlabonne/llm-course 深度解析
  • 文本分类任务Qwen3-0.6B与Bert:实验见解
  • 人工智能100问☞第24问:什么是生成对抗网络(GAN)?
  • 多模态大语言模型arxiv论文略读(七十九)
  • C# DataGridView 选中所有复选框
  • Centos7系统(最小化安装)安装zabbix7版本详细文章、nginx源代码配置、php源代码、mysql-yum安装
  • CSS面试题汇总
  • 【Rust闭包】rust语言闭包函数原理用法汇总与应用实战
  • 微信小程序:封装表格组件并引用
  • C++之unordered_map/unordered_set模拟实现
  • conda创建环境常用命令(个人用)
  • STM32就业前景和下载KEIL软件(保姆级)
  • Vue3中setup运行时机介绍
  • FC7300 DMA MCAL 配置引导
  • 经典循环神经网络变体
  • 将已打包好的aar文件,上传到 Coding 的 Maven 仓库
  • Windows11安装rockerMq5.0+以及springboot集成rockerMq
  • iOS SwiftUI的具体运用实例(SwiftUI库的运用)
  • 大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
  • 应用层DDoS防护:从请求特征到行为链分析
  • Day 27 函数专题2 装饰器
  • 高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案
  • Core Web Vitals 全链路优化:从浏览器引擎到网络协议深度调优
  • Java + 鸿蒙双引擎:ZKmall开源商城如何定义下一代B2C商城技术标准?
  • 【Linux网络】数据链路层
  • 在服务器上安装AlphaFold2遇到的问题(2)
  • #跟着若城学鸿蒙# web篇-获取定位
  • 质量管理工程师面试总结