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

计算机网络-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.kler.cn/a/536114.html

相关文章:

  • Linux TCP 编程详解与实例
  • Spring Boot 自动装配原理与优化实践
  • Python因为网络原因安装依赖库报错
  • CSS(三)less一篇搞定
  • Redis有哪些常用应用场景?
  • 【2024华为OD-E卷-100分-箱子之字形摆放】((题目+思路+JavaC++Python解析)
  • 书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记
  • Maven 构建命令详解
  • leetcode刷题日记 1
  • anaconda使用
  • apisix网关ip-restriction插件使用说明
  • Spring Boot实现多数据源连接和切换
  • Linux Windows macOS如何安装Ollama
  • QQ自动发送消息
  • TypeScript 快速上手 ------- 学习笔记分享
  • SMU winter 2025 Personal Round 2
  • RabbitMQ:windows最新版本4.0.5安装方案
  • Rust unresolved import `crate::xxx` 报错解决
  • C++11—可变参数模板
  • 【CS61A 2024秋】Python入门课,全过程记录P6(Week12 Interpreters开始,更新于2025/2/7)
  • 【HarmonyOS NEXT】设备显示白屏 syswarning happended in XXX
  • C++ 类和对象 详细版(上)
  • PT2021K 单触控同步输出 IC
  • Python爬虫-如何正确解决起点中文网的无限debugger
  • CF 278A.Circle Line
  • Python中__init__.py文件的作用