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

计算机网络-SSH基本原理

最近年底都在忙,然后这两天好点抽空更新一下。前面基本把常见的VPN都学习了一遍,后面的内容应该又继续深入一点。

一、SSH简介

SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程登录和实现其他安全网络服务的协议。SSH协议由三个组件构成:SSH传输层协议SSH用户认证协议SSH连接协议

SSH协议组成

其实我们网络工程师对这个应该不陌生,很多的如设备登录、远程等都通过这个协议来进行。我刚开始工作时候是用的telnet,简单快捷但是随着工作的深入,的确还是要注意一下安全的规范,后面就逐渐都使用SSH了,今天来学习下SSH的原理与应用。

1.1 SSH传输层协议

SSH传输层协议是一个安全传输协议。SSH传输层通常建立在TCP/IP连接上,但也可以在任何其他可靠的数据流上建立。

SSH传输层协议协商了所有的密钥交换算法、公钥算法、对称加密算法、消息认证算法等。

算法类别算法功能算法名称
密钥交换算法用于产生会话密钥diffie-hellman-group14-sha1, diffie-hellman-group1-sha1…
公钥算法用于进行数字签名和用户认证ssh-rsa,ssh-dss …
对称加密算法用于会话的加密aes128-ctr,3des-cbc …
消息认证算法用于数据完整性认证hmac-sha1,hmac-md5 …

就是和之前的VPN类似先协商好对应的算法参数。

1.2 SSH用户认证协议

SSH用户认证协议为服务器提供客户端的用户鉴别。它运行在传输层协议上。SSH用户认证协议提供两种认证方法:口令认证公钥认证

  • 口令认证:客户端通过用户名和密码登录到服务器,完成用户认证。
  • 公钥认证:服务器通过公钥解密客户端的数字签名,完成用户认证。

SSH用户认证协议

常见的比如密码认证和密钥认证。

1.3 SSH连接协议

SSH连接协议将加密的会话连接多路复用成若干个逻辑通道,它提供了交互式登录会话,远程执行命令,TCP/IP连接转发和X11连接转发等功能。所有通道都复用一个会话连接。

SSH连接协议在SSH传输层和SSH用户认证协议之上运行。

TCP/IP连接转发能够将其他TCP端口的网络数据通过SSH通道来转发,并保证了安全性。

Telnet、SMTP、IMAP和其他一些基于TCP/IP的不安全协议都可以通过SSH转发变得安全,避免了用户名,密码以及隐私信息的明文传输。

X11中的X是X协议,11是X协议的第11个版本。Linux的图形化界面,底层都是基于X协议。

二、SSH的工作原理

在整个通讯过程中,为实现SSH的安全连接,服务器端与客户端要经历如下五个阶段:

  • 版本协商阶段:SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本。
  • 算法协商阶段:SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的加密算法。
  • 密钥交换阶段:通过密钥交换算法生成会话密钥,此后双方的会话均通过会话密钥加密。
  • 用户认证阶段:SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。
  • 会话交互阶段:认证通过后,服务器端和客户端进行信息的交互。

SSH的工作原理

2.1 版本协商阶段

客户端和服务器交互SSH版本协商报文,确定V1或V2版本。

服务端打开端口22,等待客户连接。 客户端向服务端发起TCP连接,双方完成握手并建立连接。 客户端向服务端发送第一个报文,包括版本标志字符串,格式为 “协议版本号 次协议版本号 软件版本号”。 服务端收到报文后,解析协议版本号,如果客户端的协议版本号比自己的低,且服务端能支持客户端的低版本,就使用客户端的协议号,否则使用自己的协议版本号。

版本协商阶段

2.2 算法协商阶段

客户端和服务器交互自己支持的算法列表,该列表包括四种算法的具体算法名称。

算法协商过程为:从客户端的算法列表取出第一个算法,服务器在自身的算法列表中查找,若匹配上相同的算法,则协商成功,继续协商下一种算法;否则继续从客户端的该种算法列表中取出下一个算法,在服务器端的算法列表中匹配,直到匹配成功。

算法协商阶段

2.3 密钥交换阶段

根据密钥交换算法,双方动态地产生会话密钥用于后续会话加密。会话密钥无法被第三者截获,安全可靠。

密钥交换阶段

2.4 用户认证阶段

密码认证:
用户认证阶段有口令认证和公钥认证两种方式。其中口令认证过程为:客户端发送携带用户名和口令的认证请求,服务器与本地用户数据进行匹配认证。

口令认证和

公钥认证过程为:客户端发送携带数字签名的认证请求,服务器通过公钥解密数字签名进行认证。

公钥认证

2.5 会话交互阶段

用户完成认证后,客户端向服务器发起建立通道请求,进行数据传输。

会话交互阶段

然后开始数据交互。

总结:SSH协议包括SSH传输层协议SSH用户认证协议SSH连接协议。建立连接需要经过版本协商、算法协商、密钥交换、用户认证、会话交互等阶段实现安全的数据交互。下次再来做一些实验来验证。

相关文章:

计算机网络-SSH基本原理

最近年底都在忙,然后这两天好点抽空更新一下。前面基本把常见的VPN都学习了一遍,后面的内容应该又继续深入一点。 一、SSH简介 SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程登录和实现其他安…...

doris:MySQL 兼容性

Doris 高度兼容 MySQL 语法,支持标准 SQL。但是 Doris 与 MySQL 还是有很多不同的地方,下面给出了它们的差异点介绍。 数据类型​ 数字类型​ 类型MySQLDorisBoolean- 支持 - 范围:0 代表 false,1 代表 true- 支持 - 关键字&am…...

mysql 存储过程和自定义函数 详解

首先创建存储过程或者自定义函数时,都要使用use database 切换到目标数据库,因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合,封装在数据库对象中。以下是一些常见的存储过程的关键字: 存…...

C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理

在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易于阅读和编写、易于机器解析和生成的特性,被广泛应用于各种场景。C 作为一种强大的编程语言,自然也需要一个高效的…...

websocket自动重连封装

websocket自动重连封装 前端代码封装 import { ref, onUnmounted } from vue;interface WebSocketOptions {url: string;protocols?: string | string[];reconnectTimeout?: number; }class WebSocketService {private ws: WebSocket | null null;private callbacks: { [k…...

【C语言】球球大作战游戏

目录 1. 前期准备 2. 玩家操作 3. 生成地图 4. 敌人移动 5. 吃掉小球 6. 完整代码 1. 前期准备 游戏设定:小球的位置、小球的半径、以及小球的颜色 这里我们可以用一个结构体数组来存放这些要素,以方便初始化小球的信息。 struct Ball {int x;int y;float r;DWORD c…...

人工智能D* Lite 算法-动态障碍物处理、多步预测和启发式函数优化

在智能驾驶领域,D* Lite 算法是一种高效的动态路径规划算法,适用于处理环境变化时的路径重规划问题。以下将为你展示 D* Lite 算法的高级用法,包含动态障碍物处理、多步预测和启发式函数优化等方面的代码实现。 代码实现 import heapq impo…...

MySQL 8版本认证问题

目录 问题: Public Key Retrieval is not allowed原因: mysql 8.0 调整身份认证机制解决方法(三种) 问题: Public Key Retrieval is not allowed 连接MySQL8数据库的时候,报错内容如下:“Publi…...

Android 开发APP中参数配置与读取总结

以使用MQTT配置的参数 MQTT_BROKER_UR 、MQTT_USER_NAME、 MQTT_PASSWORD为例,说明配置设置和读取应用 项目中使用系统参数(如环境变量和gradle.properties文件中的属性)在Gradle构建脚本中,以下是一个详细的操作文档资料&…...

Scala 语法入门

Scala语法入门 1. 定义变量2. 定义方法3. 闭包4. 声明字符串5. 声明数组6. 声明集合7. 异常处理 1. 定义变量 (变量的类型在变量名之后等号之前声明) 不可变变量(val) 类似于 Java 中的 final 变量,即一旦赋值后,其值不能再被改…...

python中的flask框架

Flask 是一个用Python编写的轻量级Web应用框架 基于WSGI和Jinja2模板引擎 被称为“微框架”,其核心功能简单,不捆绑数据库管理、表单验证等功能,而是通过扩展来增加其他功能 Flask提供最基本的功能,不强制使用特定工具或库 通…...

【redis】缓存设计规范

本文是 Redis 键值设计的 14 个核心规范与最佳实践,按重要程度分层说明: 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析: 是否需要排序?: zset(有序集合)用…...

归一化与伪彩:LabVIEW图像处理的区别

在LabVIEW的图像处理领域,归一化(Normalization)和伪彩(Pseudo-coloring)是两个不同的概念,虽然它们都涉及图像像素值的调整,但目的和实现方式截然不同。归一化用于调整像素值的范围&#xff0c…...

DeepSeek大模型本地部署实战

1. 下载并安装Ollama 打开浏览器:使用你常用的浏览器(如Chrome、Firefox等)访问Ollama的官方网站。无需特殊网络环境,直接搜索“Ollama”即可找到。 登录与下载:进入Ollama官网后,点击右上角的“Download…...

deepseek+kimi自动生成ppt

打开deepseek官网,输入详细的需求,让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦,下载编辑使用吧...

集成SwanLab与HuggingFace TRL:跟踪与优化强化学习实验

文章目录 1. 引入SwanLabCallback2. 传入Trainer3. 完整案例代码4. GUI效果展示 TRL (Transformers Reinforcement Learning,用强化学习训练Transformers模型) 是一个领先的Python库,旨在通过监督微调(SFT)、近端策略优化&#xf…...

cefsharp131升级132测试(WinForms.NETCore)

一、升级(Nuget) 版本说明(readme):最低.NET Core3.1 (NET5.0) Visual C 2019 Redist 二、试运行、兼容性测试 三、后记说明 支持H264版本推荐版本63,79,84,88,100,111,125(支持h264和pdf预览) 其他H264版…...

Gitee AI上线:开启免费DeepSeek模型新时代

Gitee Al上线,并宣布开启免费DeepSeek模型的时代,这是一个非常值得关注的消息,因 为它标志着国内在AI领域的一个重要发展。DeepSeek模型是由阿里巴巴达摩院开发的,旨 在提供强大的自然语言处理(NLP)能力。下面是一些关于这一事件…...

nginx常用命令及补充

在Linux环境下nginx常用命令如下: 1、查看nginx版本号命令 nginx -v 2、查找nginx配置文件路径已经检查配置文件是否正确 nginx -t 3、查找nginx安装目录 which nginx 4、查看nginx进程 ps -ef|grep nginx 5、进入到nginx的sbin目录后,执行一下…...

自动驾驶---聊聊传统规控和端到端

1 背景 在自动驾驶领域中,端到端模型的兴起确实对传统的规划控制方法(笔者并不同意网上以Rule-Base称呼传统规控,传统的规控其实也使用了很多优化算法和博弈算法)产生了挑战,但这就意味着传统规控方法就完全没有应用了…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...