当前位置: 首页 > 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连接协议。建立连接需要经过版本协商、算法协商、密钥交换、用户认证、会话交互等阶段实现安全的数据交互。下次再来做一些实验来验证。

http://www.lryc.cn/news/533426.html

相关文章:

  • doris:MySQL 兼容性
  • mysql 存储过程和自定义函数 详解
  • C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理
  • websocket自动重连封装
  • 【C语言】球球大作战游戏
  • 人工智能D* Lite 算法-动态障碍物处理、多步预测和启发式函数优化
  • MySQL 8版本认证问题
  • Android 开发APP中参数配置与读取总结
  • Scala 语法入门
  • python中的flask框架
  • 【redis】缓存设计规范
  • 归一化与伪彩:LabVIEW图像处理的区别
  • DeepSeek大模型本地部署实战
  • deepseek+kimi自动生成ppt
  • 集成SwanLab与HuggingFace TRL:跟踪与优化强化学习实验
  • cefsharp131升级132测试(WinForms.NETCore)
  • Gitee AI上线:开启免费DeepSeek模型新时代
  • nginx常用命令及补充
  • 自动驾驶---聊聊传统规控和端到端
  • node.js + html + Sealos容器云 搭建简易多人实时聊天室demo 带源码
  • OpenFeign远程调用返回的是List<T>类型的数据
  • PCL 计算多边形的面积【2025最新版】
  • 著名大模型评测榜单(不同评测方式)
  • 国内知名Deepseek培训师培训讲师唐兴通老师讲授AI人工智能大模型实践应用
  • 【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用
  • 如何打造一个更友好的网站结构?
  • 【ROS2】RViz2自定义面板插件(rviz_common::Panel)的详细步骤
  • 漏洞分析 Spring Framework路径遍历漏洞(CVE-2024-38816)
  • 《手札·避坑篇》2025年传统制造业企业数字化转型指南
  • MySQL中DDL操作是否支持事务